公司项目从springboot1.x升级到2.x后,使用httpclient4.5包模拟表单请求,调用其他服务接口,结果返回501。
使用postman或restTemplate调用返回就正常,java程序调用就不行。java代码如下:
省略其他代码……
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
//头信息
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
//模拟post表单提交,使用UrlEncodedFormEntity请求体
List<NameValuePair> data = new ArrayList<NameValuePair>();
for(Map.Entry<String,Object> entry:requestParams.entrySet()){
data.add(new BasicNameValuePair(entry.getKey(), entry.getValue()+""));
//设置UrlEncodedFormEntity请求体
httpPost.setEntity(new UrlEncodedFormEntity(data,"UTF-8"));
HttpResponse response = client.execute(httpPost);
省略其他代码……
解决办法:
把请求体改成StringEntity,用json串去请求post接口,代码如下:
省略其他代码……
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
//头信息
httpPut.setHeader("Content-Type","application/json;charset=utf-8");
//设置StringEntity请求体
httpPost.setEntity(httpPut.setEntity(new StringEntity(ObjectMapperM.getInstanceOf().getMapper().writeValueAsString(requestParams),"UTF-8")););
HttpResponse response = client.execute(httpPost);
省略其他代码……
问题:尝试
POST
请求
时收到
501
未实现的错误。 GET方法工作得很好,但是它的数据长度限制使得我希望传递给PHP脚本的XML字符串不可行。背景:我根据一些
使用
Java
Script的用户输入生成XML字符串。接下来,我尝试将此XML字符串(在编码之后)传递给PHP脚本,以将字符串写为服务器上的XML文件并执行关于它的命令。服务器:Apache / 2.4.6(CentOS)OpenSSL / 1....
[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-parent/2.2.2.RELEASE/spring-boot-starter-parent-2.2.2.RELEASE.pom
[ERROR] The bu...
代码 说明
100 (继续)
请求
者应当继续提出
请求
。 服务器
返回
此代码表示已收到
请求
的第一部分,正在等待其余部分。
101 (切换协议)
请求
者已要求服务器切换协议,服务器已确认并准备切换。
2xx...
Post
man的test本质上是
Java
Script代码,通过我们编写测试代码,每一个tests
返回
True,或是False。
每一个tests实际上就是一个测试用例。官方文档给出了很多验证方式,我们通过实例来进行学习
接口
返回
结果为json
"status": 301,
"message": "购买商品库存不足",
"lists": [11]
1. 检查response...
最近用python的requests库写了个自动部署的脚本,但是在上传文件时卡壳了,服务器一直
返回
501
错误,想到了各种可能原因,但都没能解决。最后在抓到的包的body部分看到了对数据类型字段的描述:application/octet-stream,于是猜想是因为缺少数据类型描述导致服务器无法知道数据类型,才
返回
的
501
。于是从requests官网查到multipart/form-data上传文件时
http状态
返回
代码代码 说明
100 (继续)
请求
者应当继续提出
请求
。 服务器
返回
此代码表示已收到
请求
的第一部分,正在等待其余部分。
101 (切换协议)
请求
者已要求服务器切换协议,服务器已确认并准备切换。
http状态
返回
代码2xx (成功)
表示成功处理了
请求
的状态代码。