栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android HTTPPost返回错误“方法不允许。”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android HTTPPost返回错误“方法不允许。”

在网址末尾添加“ /”会导致重定向发生,因为您的服务器喜欢以“
/”结尾的网址。服务器将您重定向到的URL完全支持POST,但是当客户端根据setRedirecting()调用的行为运行时,客户端将执行GET请求(cURL与-
L开关执行相同的操作)解决方法是要么URL末尾的’/’,或者您自己从响应中获取Location标头,然后手动启动另一个POST请求。

这可以在wireshark中观察到。您可以通过尝试使用浏览器对URL附加一个斜杠的GET请求来测试该理论。这将导致浏览器得到405。这是Android的固定代码,此代码使用简单的修复方法,即在URL后面附加一个“
/”(尚未投入生产):

 package com.altaver.demo;import java.io.IOException;import java.io.UnsupportedEncodingException;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.HttpResponseException;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.params.HttpClientParams;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.BasicResponseHandler;import org.apache.http.impl.client.DefaultHttpClient;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.Toast;public class AltaVerDemoActivity extends Activity {    private static final String TAG = "MainActivity";    private static final String URL = "http://96.56.2.188/sdz/avReSTfulLogin1/";        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        JSonObject jsonObjSend = new JSonObject();        try { jsonObjSend.put("Pass", "sz"); jsonObjSend.put("User", "szechman");        } catch (JSonException e) { // TODO Auto-generated catch block e.printStackTrace();        }        HttpClient client = new DefaultHttpClient();        HttpPost httpPostRequest = new HttpPost(URL);        httpPostRequest.setHeader("User-Agent", "com.altaver.android_PostJson2");        httpPostRequest.setHeader("Accept", "application/json");        httpPostRequest.setHeader("Content-Type", "application/json");        StringEntity se = null;        try { se = new StringEntity(jsonObjSend.toString());        } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace();        }        httpPostRequest.setEntity(se);        HttpResponse response = null;        try { response = client.execute(httpPostRequest);        } catch (ClientProtocolException e) { // TODO Auto-generated catch block Toast.makeText(getApplicationContext(),         "Please check your internet connection",         Toast.LENGTH_SHORT).show(); e.printStackTrace();        } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();        }        BasicResponseHandler responseHandler = new BasicResponseHandler();        String strResponse = null;        if (response != null) { try {     strResponse = responseHandler.handleResponse(response); } catch (HttpResponseException e) {     // TODO Auto-generated catch block     e.printStackTrace(); } catch (IOException e) {     // TODO Auto-generated catch block     e.printStackTrace(); }        }        Log.e("AltaVerDemoActivity", "Response: " + strResponse);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号