背景
前几天做一个任务要调用别的系统的接口。系统严格要求我的请求url是utf-8编码格式的。但是我真正调用人家接口进行post请求的时候,却报错,invalid query。
过程
各种查资料以后,资料都说是请求的参数里面有编码问题。但是我自己粘出来再直接请求是能获得正常的返回值的。于是我看到了很多人强制将参数给改成utf-8的编码,在一个帖子里用了URLEncoder.enode():
String searchdqcph = "粤s.F3462";
String searchcx = "G";
String url = "http://www.dgsfs.net/product_search.asp?searchdqcph="+URLEncoder.encode(searchdqcph, 'utf-8')+"&searchcx="+searchcx;
String htmlContent = GetHttpClint.doGet(url);
我这么写以后还是报错,就彻底没办法了。
解决
后来问同事,同事让我把请求的最终url直接粘出来贴到浏览器地址栏,请求以后又从地址栏里粘出来。才发现原来是有一个等号写成了别的编码的等号,在那个等号的地方变成了一串乱码,在eclipse里面看不太出来,但是请求的时候确报错。
这一招好好用啊,记住了~