当前位置: 首页 > 知识库问答 >
问题:

在Jersey到API的邮件请求上出错,与邮递员的工作很好

秦宜修
2023-03-14

我用Laravel5开发了一个API RESTful服务(后端),并用Postman测试了它。有几个资源来获取信息与get和POST请求,他们与邮递员工作得很好。我开始用Jersey的Java客户机测试API。GET方法可以很好地处理这样的代码,并且响应是一个json,我用Jackson解析它。

Client client = ClientBuilder.newClient();
WebTarget webTarget = client.target(ClientUrl);
Invocation.Builder invocationBuilder = 
webTarget.request(MediaType.APPLICATION_FORM_URLENCODED_TYPE);
Response mResponse = invocationBuilder.get();
{"email":"xxxxxx@gmail.com", "password":"xxxxxxxxxx"}
Client client = ClientBuilder.newClient();
Form mForm = new Form();
mForm.param("email", email);
mForm.param("password", password);

WebTarget target = client.target(Utils.URL_LOGIN);
//As stated in the documentation, the APPLICATION_FORM_URLENCODED = 
//"application/x-www-form-urlencoded"
Builder request = target.request(MediaType.APPLICATION_FORM_URLENCODED);
//I print the request to verify the request 
print(request.toString());
Response response =  request.post(Entity.form(mForm));
//I print the response to verify the response received and also the code 
print("Response: " + response.toString());
print("Code: " + response.getStatus());
String result = response.readEntity(String.class);
response.close();
print(result);
org.glassfish.jersey.client.JerseyInvocation$Builder@65e579dc
Response: InboundJaxrsResponse{context=ClientResponse{method=POST, uri=http://www.dance-world.com/api/login, status=200, reason=OK}}
{"code":400,"status":"error","message":"No data attached to the request"}

共有1个答案

柴文林
2023-03-14

我也用Unirest试过,因为比Jersey更容易使用。我键入了下面的代码

 try {
      HttpRequestWithBody requestwithBody = Unirest.post(url)
      .header("Content-Type", "application/json")
      .header("accept", "application/json");

      RequestBodyEntity requestBodyEntity = requestwithBody.body(input);

      response = requestBodyEntity.asJson();

} catch (UnirestException e) {
    e.printStackTrace();
} finally {
    print("Status: " + String.valueOf(response.getStatus()));
    print("Body: " + String.valueOf(response.getBody()));
}

本地服务器没有接收json主体,我从服务器收到了相同的响应

{"code":400,"status":"error","message":"No data attached to the request"}
 类似资料:
  • 在我的Laravel应用程序中,我需要定期使用Guzzle将数据发送到API。 API使用承载令牌进行身份验证,并请求和接受原始JSON。为了进行测试,我使用Postman访问了API,一切都工作得很好。

  • 我有一个非常基本的webApi构建/运行(相当模板应用程序,仅此而已),以便遵循一个培训视频。GET和DELETE调用工作正常,PUT和POST给出400错误。诚然,对所有这些都很新,所以我正在寻找一些基本的方向,关于如何排除故障。相关的屏幕截图如下,我很高兴提供其他要求。提前谢了。

  • 不管用。就像文件没有正确地附加到HTTP请求一样。 编辑:我终于明白了问题是POSTMAN可以访问我的文件系统,但我试图运行导出代码段的远程服务器没有--这是我的一个非常愚蠢的错误。

  • 我正试着在邮递员上打API。API正在服务器上工作,但我没有收到任何数据。以下是视觉图像: 它是回应我与“没有数据”和400错误的要求。

  • 我的api基url是: https://locodealapi.herokuapp.com/api/deals 在邮递员传球,跟随在头和它的工作很好。 OKHTTP日志拦截器 注意:相同的代码在本地nodejs服务器(仅限http)中运行良好

  • 我正在尝试使用Postman访问API,以使用基本身份验证获取响应,但当我提交数据时,它会给我带来可怕的400错误,这显然表明某些标头设置不正确。 以下是API信息: 作为回应,我应该得到一个JSON形式的加密令牌,而不是得到这个错误。 以下是邮差截图: 我错过了什么吗?