ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OkHTTP Post错误405但是curl命令正常

2022-09-15 20:30:37  阅读:262  来源: 互联网

标签:playlists 请求 curl 405 Address OkHTTP Post Method


问题描述

最近我尝试在服务上用OkHttp向"IP_Address/playlists"发送post请求的时候,收到了错误405。错误信息为:

192.168.0.105 - - [19/Jul/2018 17:23:37] "POST //playlists HTTP/1.1" 405 -

来自服务器的响应为:

Allow: HEAD, GET, OPTIONS Content-Length: 178 Server: Werkzeug/0.14.1 Python/3.7.0 Date: Fri, 20 Jul 2018 01:57:56 GMT <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>405 Method Not Allowed</title> <h1>Method Not Allowed</h1> <p>The method is not allowed for the requested URL.</p>

但是我用curl命令发送相同的httppost请求,却得到的是成功的响应。

在对Okhttp做了多次正确性验证后,实在还是一头雾水

问题解决

在对响应结果做打印追踪问题时,找到了它要访问的完整URL是"http://IP_Address_Another//playlists"(有两个“/”,这就是为什么它得到错误的原因),于是将要访问的url直接改成"http://IP_Address_Another/playlists"就好了

问题分析

在网上查找405问题期间,发现了有以下几个结论:

  1. POST类请求出现302跳转,302跳转的时候会更改请求方法此时服务端可能不能识别,则报405错误。
  2. 请求服务端直接校验Method,对应Response Header中会有Allow =GET的信息字样。
  3. 负载均衡或者Web Server上做转发的时候,修改了请求Method导致后端无法识别。

对于本次问题进行分析,考虑到应该是第一种,用curl -v试验了一下,果然中间走了一层3xx。考虑到可能是3xx重定向到的host末尾可能多加了"/",导致最后拼接访问的时候,是两个斜线,导致了问题。

 

标签:playlists,请求,curl,405,Address,OkHTTP,Post,Method
来源: https://www.cnblogs.com/fnlingnzb-learner/p/16697868.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有