1

HTTP POST リクエストを設定しようとしていますが、SocketTimeoutException常に取得されます。私のコードの何が問題なのか誰か知っていますか?

int TIMEOUT_MILLISEC = 60000;  // = 60 seconds
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);

client = new DefaultHttpClient(httpParams);

StringBuilder builder = new StringBuilder(URL_STRING); 

HttpPost request = new HttpPost(builder.toString());

request.setEntity(new ByteArrayEntity(jobj.toString().getBytes("UTF8")));

HttpResponse response = client.execute(request);
4

2 に答える 2

3

このコードを参照してください。ほとんどすべての基本的な HttpClient 例外の処理を理解するのに役立ちます。試す {

    // check for request method
    if (method == "POST") {
        // request method is POST
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(new UrlEncodedFormEntity(params));

        // new
        HttpParams httpParameters = httpPost.getParams();
        // Set the timeout in milliseconds until a connection is
        // established.
        int timeoutConnection = 10000;
        HttpConnectionParams.setConnectionTimeout(httpParameters,
                timeoutConnection);
        // Set the default socket timeout (SO_TIMEOUT)
        // in milliseconds which is the timeout for waiting for data.
        int timeoutSocket = 10000;
        HttpConnectionParams
                .setSoTimeout(httpParameters, timeoutSocket);
        // new
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

    } else if (method == "GET") {
        // request method is GET
        DefaultHttpClient httpClient = new DefaultHttpClient();
        String paramString = URLEncodedUtils.format(params, "utf-8");
        url += "?" + paramString;
        HttpGet httpGet = new HttpGet(url);
        // new
        HttpParams httpParameters = httpGet.getParams();
        // Set the timeout in milliseconds until a connection is
        // established.
        int timeoutConnection = 10000;
        HttpConnectionParams.setConnectionTimeout(httpParameters,
                timeoutConnection);
        // Set the default socket timeout (SO_TIMEOUT)
        // in milliseconds which is the timeout for waiting for data.
        int timeoutSocket = 10000;
        HttpConnectionParams
                .setSoTimeout(httpParameters, timeoutSocket);
        // new
        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
    }

} catch (UnsupportedEncodingException e) {
    throw new Exception("Unsupported encoding error.");
} catch (ClientProtocolException e) {
    throw new Exception("Client protocol error.");
} catch (SocketTimeoutException e) {
    throw new Exception("Sorry, socket timeout.");
} catch (ConnectTimeoutException e) {
    throw new Exception("Sorry, connection timeout.");
} catch (IOException e) {
    throw new Exception("I/O error(May be server down).");
}
于 2013-05-03T08:33:53.767 に答える