Java 为什么HTTP post方法发送get请求而不是post请求?
我在android应用程序中工作,需要通过POST请求从web api获取令牌,我使用的是OkHttp库版本2.3.0,但奇怪的是POST方法正在执行get请求,结果我从服务器获得405个状态代码,这是方法不允许的响应 这是我的密码Java 为什么HTTP post方法发送get请求而不是post请求?,java,android,post,get,okhttp,Java,Android,Post,Get,Okhttp,我在android应用程序中工作,需要通过POST请求从web api获取令牌,我使用的是OkHttp库版本2.3.0,但奇怪的是POST方法正在执行get请求,结果我从服务器获得405个状态代码,这是方法不允许的响应 这是我的密码 public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); public String executePOST(){ OkHttpCli
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
public String executePOST(){
OkHttpClient client = new OkHttpClient();
.
.
.
.
String url = API_URL + "/oauth/access_token/";
String strResponse = null;
RequestBody body = RequestBody.create(JSON, jsonBody);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response;
try {
response = client.newCall(request).execute();
strResponse = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return strResponse;
}
调试代码时,响应对象包含以下内容
你知道这有什么问题吗?这一个可能的解决办法是什么?非常感谢您的帮助!谢谢…在生成请求时,您需要设置call post,如下所示:
String postBody = "postBody\n";
Request request = new Request.Builder()
.url("https://api.github.com/markdown/raw")
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN, postBody))
.build();
但我明白了,你在给波斯特打电话。。。也许媒体类型应该有所不同
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse("text/x-markdown; charset=utf-8");
但你可能需要这个:
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
请注意HTTP响应的
priorResponse()
成员。正在重定向您的POST
请求,Web服务器拒绝重定向的请求。很可能,无论Web服务器在做什么,重定向都应该返回307或308(保留请求方法),而不是当前返回的重定向响应代码。我在向http://发送帖子时遇到了这种问题,而不是https://
我想,它会自动将我重定向到https://那里方法类型丢失。我的问题是URL中有一个额外的斜杠,以前是这样的 mysite.com/api/v1/question/attent/ 它在删除斜线后工作,如下所示 mysite.com/api/v1/question/attent
好的,我试试……:)媒体类型标记常量是什么?我在哪里可以得到它?是的,但是我应该在两者中使用什么呢?我正在使用JSON媒体类型。看起来库正在根据媒体类型选择要使用的方法。。。但它的效果很差。尝试使用markdown,看看服务器是否会接受。是否尝试删除URL末尾的/?我曾经遇到过一个类似的问题,这样做为我解决了它。这也发生在我身上。。。这是因为我在API_URL中包含了“www”