Android 安卓,安卓4.0中的HttpPost方法有什么问题吗?

Android 安卓,安卓4.0中的HttpPost方法有什么问题吗?,android,operating-system,http-post,3g,Android,Operating System,Http Post,3g,几年前,我开发了一个应用程序。在每个活动中,我都使用HttpPost方法向服务器发送一些参数。在Android v4.0以下的所有设备上,3G服务都可以正常工作。我的代码如下: private String postData() { HttpClient httpClient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(PropertyManager.getLoginURL()); List&l

几年前,我开发了一个应用程序。在每个活动中,我都使用HttpPost方法向服务器发送一些参数。在Android v4.0以下的所有设备上,3G服务都可以正常工作。我的代码如下:

private String postData() {
    HttpClient httpClient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(PropertyManager.getLoginURL());

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
    nameValuePairs.add(new BasicNameValuePair("u", Uri.encode(PropertyManager.getUserId())));
    nameValuePairs.add(new BasicNameValuePair("p", Encryption.encrypt(PropertyManager.getPassword())));
    nameValuePairs.add(new BasicNameValuePair("v", PropertyManager.VER));
    nameValuePairs.add(new BasicNameValuePair("t", "0"));

    try {
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        Log.i("Requestd Connection", httppost.getURI().toString());


        HttpResponse response = httpClient.execute(httppost);
        String responseBody = EntityUtils.toString(response.getEntity());
        Log.i("Server Response: ", responseBody);

        if (response.containsHeader("Set-Cookie")) {
            String sessionId = extractSessionId(response.getHeaders("Set-Cookie")[0].getValue());
            PropertyManager.setSessionID(sessionId);
            Log.i("Session Id:", sessionId);
        }


    String str = responseBody.substring(0, 9);
    if(str.equalsIgnoreCase("<!DOCTYPE")) {
        Log.i("postData()", "HTML found instead of XML. Try to extract info...");

        str = responseBody.substring(responseBody.indexOf("<tr>")+4, responseBody.lastIndexOf("</tr>"));
        str = str.toUpperCase();
        Log.i("Extracted info", str);

        return str;
    } else              
        return responseBody;

    } catch(UnsupportedEncodingException usee) {
        usee.printStackTrace();
    } catch(ClientProtocolException cpe) {
        cpe.printStackTrace();
    } catch(IOException ioe) {
        ioe.printStackTrace();
    }

    return null;
}
07-09 14:19:15.395: I/JupiterMPro(4750): onCreate executes ...
07-09 14:19:15.410: I/MSBootUp(4750): inside onCreate();
07-09 14:19:15.465: I/MA_isOnline(4750): Checking Internet Connection...
07-09 14:19:15.465: I/MA_isOnline(4750): Internet Connection found.
07-09 14:19:15.560: I/JupiterMPro(4750): onDestroy executes ...
07-09 14:19:43.765: I/MA_isOnline(4750): Checking Internet Connection...
07-09 14:19:43.765: I/MA_isOnline(4750): Internet Connection found.
07-09 14:19:44.015: I/Requestd Connection(4750): http://demo.excelforce.com.my/mobiletraderjssb/dopwd.aspx?
07-09 14:20:09.350: I/Server Response:(4750): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
07-09 14:20:09.350: I/Server Response:(4750):     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
07-09 14:20:09.350: I/Server Response:(4750): <html xmlns="http://www.w3.org/1999/xhtml">
07-09 14:20:09.350: I/Server Response:(4750): <head>
07-09 14:20:09.350: I/Server Response:(4750): <title></title>
07-09 14:20:09.350: I/Server Response:(4750): </head>
07-09 14:20:09.350: I/Server Response:(4750): <body>
07-09 14:20:09.350: I/Server Response:(4750): <table>
07-09 14:20:09.350: I/Server Response:(4750): <tr>
07-09 14:20:09.350: I/Server Response:(4750): <td id="LGFLAG">S</td>
07-09 14:20:09.350: I/Server Response:(4750): <td id="LGMSG"></td>
07-09 14:20:09.350: I/Server Response:(4750): <td id="CLNT_0">CLNTXXX,EF TEST,C,001,</td>
07-09 14:20:09.350: I/Server Response:(4750): </tr>
07-09 14:20:09.350: I/Server Response:(4750): </table>
07-09 14:20:09.350: I/Server Response:(4750): </body>
07-09 14:20:09.350: I/Server Response:(4750): </html>
07-09 14:20:09.350: I/postData()(4750): HTML found instead of XML. Try to extract info...
07-09 14:20:09.365: I/Extracted info(4750): <TD ID="LGFLAG">S</TD>
07-09 14:20:09.365: I/Extracted info(4750): <TD ID="LGMSG"></TD>
07-09 14:20:09.365: I/Extracted info(4750): <TD ID="CLNT_0">CLNTXXX,EF TEST,C,001,</TD>
07-09 14:20:09.460: I/JupiterMPro(4750): onCreate executes ...
07-09 14:20:09.510: I/webclipboard(4750): clipservice: android.sec.clipboard.ClipboardExManager@41994c30
07-09 14:20:09.615: I/MSMarket(4750): Creating activity...
07-09 14:20:09.685: I/JupiterMPro(4750): onStart executes ...
07-09 14:20:09.685: I/JupiterMPro(4750): onResume executes ...
07-09 14:20:09.755: I/MSMarket, Requested URL:(4750): http://demo.excelforce.com.my/mobiletraderjssb/mtjvg.aspx?marketsummary&msg=1&brd=0
07-09 14:20:10.030: I/MSLogin(4750): onStop executes ...
07-09 14:20:11.350: I/MSMarket, Response code:(4750): 200
07-09 14:20:11.365: I/MSMarket, Server Response:(4750): 50,9/7/2012*2:20 PM#1619.61&-0.94&0&448.392m&399.033m&264&331&293&682&1&P
private String postData(){
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(PropertyManager.getLoginURL());
List nameValuePairs=新的ArrayList(4);
添加(新的BasicNameValuePair(“u”,Uri.encode(PropertyManager.getUserId()));
添加(新的BasicNameValuePair(“p”,Encryption.encrypt(PropertyManager.getPassword()));
添加(新的BasicNameValuePair(“v”,PropertyManager.VER));
添加(新的BasicNameValuePair(“t”,“0”));
试一试{
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
Log.i(“请求的连接”,httppost.getURI().toString());
HttpResponse response=httpClient.execute(httppost);
String ResponseBy=EntityUtils.toString(response.getEntity());
Log.i(“服务器响应:”,响应主体);
if(response.containsHeader(“Set Cookie”)){
字符串sessionId=extractSessionId(response.getHeaders(“Set Cookie”)[0].getValue());
PropertyManager.setSessionID(sessionId);
Log.i(“会话Id:,会话Id”);
}
String str=responseBody.substring(0,9);

如果(str.equalsIgnoreCase)(您是否考虑过该问题是否与?
您无法在honeycomb(3.0)和forward的主线程上执行联网操作。

您是否考虑过该问题是否与以下问题有关?
您不能在honeycomb(3.0)和forward的主线程上执行联网操作。

您必须使用AsycTask

或一个新线程来管理http连接。 您不能使用主踏板拨打电话

AsycTask和Thread基本相同,但AsycTask实现了4种基本方法

onPreExecute()、onPostExecute、onProgressUpdate和doInBackground


尝试一下,告诉我们它是否有效。

您必须使用AsycTask

或一个新线程来管理http连接。 您不能使用主踏板拨打电话

AsycTask和Thread基本相同,但AsycTask实现了4种基本方法

onPreExecute()、onPostExecute、onProgressUpdate和doInBackground


试试看,告诉我们它是否有效。

你肯定是对的,我知道这条规则,上面所有的代码都在doInBackground()方法的AsyncTask类下运行。这不是我的问题。不过,感谢分享你的想法:)你肯定是对的,我知道这条规则,上面所有的代码都在doInBackground()的AsyncTask类下运行方法。这不是我的问题。不过,感谢您分享您的想法:)您肯定是对的,我知道这条规则,并且上面的所有代码都在doInBackground()中的AsyncTask类下运行方法。这不是我的问题。不过,感谢您分享您的想法:)我会尝试一些东西,然后再给您一个方法。希望您能顺便解决它。:)您肯定是对的,我知道这个规则,并且上面的所有代码都在doInBackground()中的AsyncTask类下运行方法。这不是我的问题。但是,谢谢你分享你的想法:)我会尝试一些东西并给你另一个方法。希望你能顺便解决它。:)你能描述一下在android 4.0上运行代码时发生了什么吗?你能给一个链接到崩溃的url吗?谢谢亲爱的Warpzit,实际上没有崩溃,应用程序也没有崩溃rks。但我有一些意外的数据包装了我的数据。我们认为这可能是因为移动服务提供商在移动设备上自动设置了代理设置。然而,这似乎是不正确的,因为当我在Android 2.2或3.0上运行应用程序时,它可以正常工作,没有问题。但是,如果我在Android 4.0上运行应用程序(同一家sim卡/移动3g服务提供商)我的XML数据将用HTML代码包装(如上面的日志结果所示)。因此,它表明代理服务器不会操纵代码。因此,唯一的区别将是Android操作系统,我认为Android v4.0有问题。我非常确定Android 4.0没有用html代码包装httpget…这几乎会破坏所有使用httpget的东西。你一定还有其他东西可以看。你能试试吗o给出httpget 2.3和4.0的输出示例?你能描述一下代码运行时在android 4.0上发生的情况吗?你也能给出一个链接到崩溃的url吗?感谢亲爱的Warpzit,实际上没有崩溃,应用程序也可以工作。但我有一些意外的数据包装了我的数据。我们认为可能是因为移动服务provider在移动设备上自动设置代理设置。但是,它似乎不正确,因为当我在Android 2.2或3.0上运行应用程序时,它可以正常工作。但是,如果我在Android 4.0(相同的sim卡/移动3g服务提供商)上运行应用程序,我的XML数据将用HTML代码包装(如上面的日志结果所示)。因此,它表明代理服务器不会操纵代码。因此,唯一的区别将是Android操作系统,我认为Android v4.0有问题。我非常确定Android 4.0没有用html代码包装httpget…这几乎会破坏所有使用httpget的东西。你一定还有其他东西可以看。你能试试吗o给出httpget 2.3和4.0的输出示例?
07-09 14:19:15.395: I/JupiterMPro(4750): onCreate executes ...
07-09 14:19:15.410: I/MSBootUp(4750): inside onCreate();
07-09 14:19:15.465: I/MA_isOnline(4750): Checking Internet Connection...
07-09 14:19:15.465: I/MA_isOnline(4750): Internet Connection found.
07-09 14:19:15.560: I/JupiterMPro(4750): onDestroy executes ...
07-09 14:19:43.765: I/MA_isOnline(4750): Checking Internet Connection...
07-09 14:19:43.765: I/MA_isOnline(4750): Internet Connection found.
07-09 14:19:44.015: I/Requestd Connection(4750): http://demo.excelforce.com.my/mobiletraderjssb/dopwd.aspx?
07-09 14:20:09.350: I/Server Response:(4750): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
07-09 14:20:09.350: I/Server Response:(4750):     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
07-09 14:20:09.350: I/Server Response:(4750): <html xmlns="http://www.w3.org/1999/xhtml">
07-09 14:20:09.350: I/Server Response:(4750): <head>
07-09 14:20:09.350: I/Server Response:(4750): <title></title>
07-09 14:20:09.350: I/Server Response:(4750): </head>
07-09 14:20:09.350: I/Server Response:(4750): <body>
07-09 14:20:09.350: I/Server Response:(4750): <table>
07-09 14:20:09.350: I/Server Response:(4750): <tr>
07-09 14:20:09.350: I/Server Response:(4750): <td id="LGFLAG">S</td>
07-09 14:20:09.350: I/Server Response:(4750): <td id="LGMSG"></td>
07-09 14:20:09.350: I/Server Response:(4750): <td id="CLNT_0">CLNTXXX,EF TEST,C,001,</td>
07-09 14:20:09.350: I/Server Response:(4750): </tr>
07-09 14:20:09.350: I/Server Response:(4750): </table>
07-09 14:20:09.350: I/Server Response:(4750): </body>
07-09 14:20:09.350: I/Server Response:(4750): </html>
07-09 14:20:09.350: I/postData()(4750): HTML found instead of XML. Try to extract info...
07-09 14:20:09.365: I/Extracted info(4750): <TD ID="LGFLAG">S</TD>
07-09 14:20:09.365: I/Extracted info(4750): <TD ID="LGMSG"></TD>
07-09 14:20:09.365: I/Extracted info(4750): <TD ID="CLNT_0">CLNTXXX,EF TEST,C,001,</TD>
07-09 14:20:09.460: I/JupiterMPro(4750): onCreate executes ...
07-09 14:20:09.510: I/webclipboard(4750): clipservice: android.sec.clipboard.ClipboardExManager@41994c30
07-09 14:20:09.615: I/MSMarket(4750): Creating activity...
07-09 14:20:09.685: I/JupiterMPro(4750): onStart executes ...
07-09 14:20:09.685: I/JupiterMPro(4750): onResume executes ...
07-09 14:20:09.755: I/MSMarket, Requested URL:(4750): http://demo.excelforce.com.my/mobiletraderjssb/mtjvg.aspx?marketsummary&msg=1&brd=0
07-09 14:20:10.030: I/MSLogin(4750): onStop executes ...
07-09 14:20:11.350: I/MSMarket, Response code:(4750): 200
07-09 14:20:11.365: I/MSMarket, Server Response:(4750): 50,9/7/2012*2:20 PM#1619.61&-0.94&0&448.392m&399.033m&264&331&293&682&1&P