尝试在HTTPCLIENT -JAVA中发送POST请求时,收到400错误请求

Chaitanya Maligi:

我正在尝试使用JAVA HTTPCLIENT发布请求,而这样做的时候,我收到404错误请求。

我尝试在Eclipse中编写Java代码,并收到404错误请求,并尝试通过POSTMAN发送请求并收到HTTP状态500

package com.apex.customer.service;

public class CustServicePostTest {

    public static void main(String[] args) throws ClientProtocolException, IOException {

        String url = "http://www.thomas-bayer.com/sqlrest/CUSTOMER/102";
        //create the http client
        HttpClient client = HttpClientBuilder.create().build();
        //create the post message
        HttpPost post = new HttpPost(url);

        List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
        urlParameters.add(new BasicNameValuePair("ID", "102"));
        urlParameters.add(new BasicNameValuePair("FIRSTNAME", "Apex"));
        urlParameters.add(new BasicNameValuePair("LASTNAME", "Consultancy"));
        urlParameters.add(new BasicNameValuePair("STREET", "Shell Blvd"));
        urlParameters.add(new BasicNameValuePair("CITY", "Fremont"));

        post.setEntity(new UrlEncodedFormEntity(urlParameters));

        HttpResponse response = client.execute(post);

        System.out.println(response.getStatusLine().getStatusCode());
        System.out.println("Parameters : " + urlParameters);
        System.out.println("Response Code: " + response);
        System.out.println(response.getStatusLine().getReasonPhrase());

    }

}

我正在寻找200 OK请求。

Marcio Jasinski:

这里的问题是由于一些错误:

  • 首先与输入格式有关。您正在使用的代码尝试映射键和值,但是正如我从本指南中可以看到的那样,它期望以纯文本格式的XML格式作为输入。
  • 第二个错误是您试图发布现有的ID。在这种情况下,要创建资源,您应该使用http://www.thomas-bayer.com/sqlrest/CUSTOMER/

因此,在这种情况下,为了使其正常工作,请尝试以下操作:

        String url = "http://www.thomas-bayer.com/sqlrest/CUSTOMER/";
        HttpClient client = HttpClientBuilder.create().build();
        HttpPost post = new HttpPost(url);

        String xml = "<resource>";
        xml += "<ID>102</ID>";
        xml += "<FIRSTNAME>Apex</FIRSTNAME>";
        xml += "<LASTNAME>Consultancy</LASTNAME>";
        xml += "<STREET>Shell Blvd</STREET>";
        xml += "<CITY>Fremont</CITY>";
        xml += "</resource>";

        post.setEntity(new StringEntity(xml));
        HttpResponse response = client.execute(post);

        System.out.println(response.getStatusLine().getStatusCode());
        System.out.println("Response Code: " + response);
        System.out.println(response.getStatusLine().getReasonPhrase());

学习使用curl命令行工具等工具进行测试的另一种方法也非常有用例如,您可以发布这样的产品:

curl -X POST  http://www.thomas-bayer.com/sqlrest/PRODUCT/ -d '<resource><ID>103</ID><NAME>X</NAME><PRICE>2.2</PRICE></resource>'

解决此问题后,使用HTTP代码将非常重要例如,500错误表示服务器端出现问题,而404通常表示您命中了无效的端点(该端点不存在)。

最后,我不会讨论您为什么使用该项目向服务器发送HTTP请求-但请记住,这不是很常见的方法。当前,带有JSON的REST将更加有趣和有趣:)如果您对此感兴趣,请查看Spring Boot REST

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

收到(400)错误的请求。尝试发送GCM消息时

尝试发送 POST 请求时收到 404 错误

尝试链接 API 时收到“400 错误请求”

尝试发送帖子并总是收到错误的请求

意外的输入结束:尝试在for循环中发送curl post请求时,对象错误的预期关闭标记

HTTPClient Post 返回错误请求 400

为什么在尝试发送POST请求时发生错误?

HttpClient Post请求不在C#中发送post参数

HttpClient:“ HttpRequestException:发送请求时发生错误”

HttpClient抛出“发送请求时发生错误”。

当我尝试更改我的 Discord 头像时,为什么会收到“400:错误请求”?

尝试在Shopify上发布请求时,请求给出400错误

Gmail API:尝试发送电子邮件时出现400错误的请求(PHP代码)

尝试发送POST请求并获取json数据,但得到400

当 Flask 收到 POST 请求并尝试将其用作 JSON 数据时出现错误

当我尝试通过访存与Api连接时,为什么会收到“错误请求”错误400?

尝试发送POST请求时,应用脚本发送405响应

HTTPClient POST尝试解析非JSON响应

当我尝试POST请求时获得400响应

尝试在Java SpringBoot中使用REST API时收到错误请求

尝试登录时Yii2中的错误请求(#400)

尝试运行Java NIO SSL的简单示例以加载https://www.amazon.com的内容,但收到400错误的请求

收到错误响应-在GO中发送POST请求时从服务器收到422

当我尝试通过 REST 请求发送 DM 时,我收到了错误的身份验证数据

尝试在Angular中缓存HttpClient请求,但看到未解析的变量

尝试使用“ http:// localhost:61961 / Token”登录到Web API。收到400错误的请求错误

如何在Windows Phone 8的HttpClient请求中发送Post正文?

C# HttpClient:如何在 POST 请求中发送查询字符串

当我尝试使用Swagger在AngularJS上构建发布请求时收到错误的请求