0

以下はサービスを呼び出すための私のコードですが、タイムアウト例外が発生します

    **DefaultHttpClient httpC = new DefaultHttpClient();
    HttpProtocolParams.setUseExpectContinue(httpC.getParams(), false);
    HttpConnectionParams.setConnectionTimeout(httpC.getParams(), 15000);
    HttpConnectionParams.setSoTimeout(httpC.getParams(), 15000);
    HttpPost httpPost = new HttpPost(WebServiceDetails.URL_WS_USER);
    httpPost.setHeader("SOAPAction", soapAction);


    try {
        se = new StringEntity(serviceXml,HTTP.UTF_8);
        se.setContentType("text/xml");
        httpPost.setEntity(se);
        BasicHttpResponse basicHttpResponse =   (BasicHttpResponse)httpC.execute(httpPost);
        HttpEntity responseEntity = basicHttpResponse.getEntity();
        InputStream inputStream = null;
        inputStream = responseEntity.getContent();
        BufferedReader r = new BufferedReader(new InputStreamReader(inputStream),1024*5);
        StringBuilder total = new StringBuilder();
        String line;
        while ((line = r.readLine()) != null) {
            total.append(line);
        }
        System.out.println("Response from service -"+total.toString());
        xmlContent=total.toString();
        System.out.println(" status Line = "+basicHttpResponse.getStatusLine());


    }catch (Exception e){e.printStackTrace();}**

エミュレータでは動作しますが、実際のデバイスでは動作しません。間違っている場合は、チュートリアルまたは例を提案してください。

ありがとう...

4

1 に答える 1

0

実際のデバイスで、モバイル ネットワーク経由のインターネット接続速度が遅い場合があります。

タイムアウトの問題を克服するには、Web ソケットがアクションを完了するための時間を稼ぐために、タイムアウト時間を単純に増やすことをお勧めします。例えば:

HttpConnectionParams.setConnectionTimeout(httpC.getParams(), 40000); //40 seconds
HttpConnectionParams.setSoTimeout(httpC.getParams(), 40000);         //40 seconds
于 2012-09-24T14:24:00.337 に答える