Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问使用POSTMAN运行良好的Web API时出错_Java_Api_Web_Apache Httpclient 4.x_Postman - Fatal编程技术网

Java 访问使用POSTMAN运行良好的Web API时出错

Java 访问使用POSTMAN运行良好的Web API时出错,java,api,web,apache-httpclient-4.x,postman,Java,Api,Web,Apache Httpclient 4.x,Postman,我尝试调用一个WEB API,并使用以下代码获得JSON输出 我已经用POSTMAN测试了这个,效果很好。POST请求的标头中有两个值,正文中还有一些值 但是当我尝试使用ApacheHTTP客户端访问相同的WEB API时,我得到了以下输出和错误: Response Code : 200 Result:{"errorCode":3000,"errorMessage":"Invalid request parameters"} 代码: 导入java.io.BufferedReader; 导入ja

我尝试调用一个WEB API,并使用以下代码获得JSON输出

我已经用POSTMAN测试了这个,效果很好。POST请求的标头中有两个值,正文中还有一些值

但是当我尝试使用ApacheHTTP客户端访问相同的WEB API时,我得到了以下输出和错误:

Response Code : 200
Result:{"errorCode":3000,"errorMessage":"Invalid request parameters"}
代码:

导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.HttpClientBuilder;
导入org.apache.http.message.BasicNameValuePair;
公共类白资源{
公共静态void main(字符串[]args){
试一试{
字符串url=”https://example.com/api";
HttpClient client=HttpClientBuilder.create().build();
HttpPost=新的HttpPost(url);
//标题
setHeader(“内容类型”、“应用程序/json”);
post.setHeader(“接受字符集”、“UTF-8”);
List urlParameters=new ArrayList();
添加(新的BasicNameValuePair(“requestType”、“xxxx”);
添加(新的BasicNameValuePair(“projectToken”、“xxxx-xxxx-xxxx”);
setEntity(新的UrlEncodedFormEntity(urlParameters));
HttpResponse response=client.execute(post);
System.out.println(“响应代码:+Response.getStatusLine().getStatusCode());
BufferedReader rd=新的BufferedReader(新的InputStreamReader(response.getEntity().getContent());
StringBuilder结果=新建StringBuilder();
字符串行=”;
而((line=rd.readLine())!=null){
结果。追加(行);
}
System.out.println(“结果:+Result”);
}捕获(IOEX异常){
Logger.getLogger(WhiteSourceAPI.class.getName()).log(Level.SEVERE,null,ex);
}
}
}

正如@VitalyZ提到的,我不应该使用UrlEncodedFormEntity作为主体,而应该使用原始JSON

            JSONObject json = new JSONObject();
            json.put("requestType", "xxxx");
            json.put("projectToken", "xxxxxxxxxxxxxx");
            StringEntity params = new StringEntity(json.toString());
            post.setEntity(params); 

正如@VitalyZ提到的,我不应该使用UrlEncodedFormEntity作为主体,而是使用原始JSON

            JSONObject json = new JSONObject();
            json.put("requestType", "xxxx");
            json.put("projectToken", "xxxxxxxxxxxxxx");
            StringEntity params = new StringEntity(json.toString());
            post.setEntity(params); 

web api的参数是什么?您将内容类型设置为“application/json”,然后将UrlEncodedFormEntity作为主体传递-这不是json。尝试传递原始JSON以检查这是否适用于you@VitalyZ谢谢,使用原始JSON而不是UrlEncodedFormEntity作为正文是有效的。web api的参数是什么?您将内容类型设置为“application/JSON”,然后将UrlEncodedFormEntity作为正文传递-这不是JSON。尝试传递原始JSON以检查这是否适用于you@VitalyZ谢谢,使用原始JSON代替UrlEncodedFormEntity作为主体工作。