调用第三方接口postman可以请求成功,但是用代码请求失败
1、发送http post请求 x-www-form-urlencoded 代码如下:
public static String sendPostxXWwwFormUrlencoded(String url, String param) {
try {
PostMethod postMethod = null;
postMethod = new PostMethod(url);
postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
postMethod.setRequestHeader("Connection", "keep-alive");
postMethod.setRequestHeader("contentType", "utf-8");
//参数设置,需要注意的就是里边不能传NULL,要传空字符串
NameValuePair[] data = {
new NameValuePair("imageURL", param)
};
postMethod.setRequestBody(data);
org.apache.commons.httpclient.HttpClient httpClient = new org.apache.commons.httpclient.HttpClient();
//设置超时时间
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
httpClient.getHttpConnectionManager().getParams().setSoTimeout(5000);
// 执行POST方法
int response = httpClient.executeMethod(postMethod);
String result = postMethod.getResponseBodyAsString();
log.info("recv - {}", result);
return result;
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (Exception e) {
log.info("请求异常" + e.getMessage(), e);
throw new RuntimeException(e.getMessage());
}
return "";
}
2、POSTMAIN请求如下:
原因是因为第三方接口开始返回时没有响应头没有返回对应的Content-Type
3、解决办法,要求第三方接口在响应头加上对应的Content-Type就可以响应了。