0

私は今本当に苦しんでいます この問題を解決するのを手伝ってください. 私は以前、自分のローカルホストに http リクエストを送信しようとしましたが、すべて正常に動作しましたが、現在は機能しておらず、理由がわかりません。

次のコードからリクエストを作成しようとしています。

    HttpClient httpclient = new DefaultHttpClient();
    String result="";
    try
     {
        HttpPost httppost = new HttpPost("http://[ip]/php/untitled.php");


        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
        nameValuePairs.add(new BasicNameValuePair("email",this.userEmail));
        nameValuePairs.add(new BasicNameValuePair("pwd",this.userpassword));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity=response.getEntity();
        if(entity!=null)
        {
              InputStream inputStream=entity.getContent();
              result= convertStreamToString(inputStream);
        }
    }
    catch (ClientProtocolException e) 
    {
        Log.e("errorhai",e.getMessage());
    }
    catch (IOException e) 
    {
        Log.e("errorhai",e.getMessage());
    }
        return result;

インターネット許可も追加しましたが、それでも言い続けます

Connect to [ip] timed out.

ブラウザに URL を入力すると正常に動作しますが、ここでは動作しません。この問題の原因を教えてください。

4

2 に答える 2

0

このようなタイプの例外を処理するために、タイムアウト パラメータを設定できます。

HttpParams httpParameters = new BasicHttpParams();

        /* Set the timeout in milliseconds until a connection is established.
            The default value is zero, that means the timeout is not used.*/  

        int timeoutConnection = 60*1000*1;
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);

        /* Set the default socket timeout (SO_TIMEOUT) 
            in milliseconds which is the timeout for waiting for data.  */
        int timeoutSocket = 60*1000*1;
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
        HttpClient client = new DefaultHttpClient(httpParameters);

        //HttpClient client = new DefaultHttpClient();
        HttpResponse httpResponse;
        try {
            /** Finally, we send our request using HTTP. This is the synchronous
                long operation that we need to run on this thread. */
            httpResponse = client.execute(request);

            /*int responseCode = httpResponse.getStatusLine().getStatusCode();
            String message = httpResponse.getStatusLine().getReasonPhrase();*/

            HttpEntity entity = httpResponse.getEntity();

            if (entity != null) {
                InputStream instream = entity.getContent();
                String res = convertStreamToString(instream);
                MLog.v("HTTP RESPONSE : ", "Res :-"+res);

                if(!res.trim().equalsIgnoreCase("[]")){
                    response.setResult(res);
                    response.setSuccess(true);
                }else{
                    response.setSuccess(false);
                    response.setErrorMessage(AppConstant.RECORD_NOT_FOUND);
                }
                /** Closing the input stream will trigger connection release */
                instream.close();
            }else{
                response.setSuccess(false);
                response.setErrorMessage(AppConstant.NETWORK_ERROR);
            }
        }   
        catch (Exception e) {
            //client.getConnectionManager().shutdown();
            e.printStackTrace();

            response.setSuccess(false);
            response.setErrorMessage(AppConstant.NETWORK_ERROR);
        }

        //you can again try to send request , if your response is not sucess.
        //retryHttpRequestIfNotSucess();
于 2013-02-08T07:23:39.960 に答える