首先可以在线测试或者浏览器中测试一下,如果同样的参数在线测试中可以返回数据,但自己的代码不行,一般可能是编码设置问题。
特别是get方式传递中文值时,应特别注意中文编码问题。大多数语言都有urlencode等类似函数,可以将中文或其他特别符号转为URL编码形式。例如PHP可以使用urlencode("中文字符")、JAVA可以使用URLEncoder.encode("中文字符" ,"UTF-8")。
另外,如果您发送给接口的参数值为图片的base64编码,则需要进行urlencode转换。因为base64可能会有+之类的符号造成解析异常。
如果返回240等错误,对于java语言HttpCilentUtil工具类,请确保有如下类似的设置:
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
此代码设置请求时的数据编码格式为接口默认支持的application/x-www-form-urlencoded方式。
URLDecoder类中包含下面两个编解码静态方法参考使用:
decode(String s,Stringcharcter),它可以将看上去乱码的特殊字符串转换成普通字符串。 encode(String s,Stringcharcter),可以将普通字符串转换成application/x-www-form-urlencoded字符串。
HttpClient类在传参和返回结果中遇到中文乱码问题可如下设置:
entity = new StringEntity(data,"UTF-8"); StringEntity stringEntity = new StringEntity(sendData,"UTF-8"); stringEntity.setContentType("application/json");
如果依然无法解决,可尝试使用https协议或者在专业技术平台请教其他开发者试试。