これは、他のクラスにある makeHttpRequest() メソッドを呼び出す doInBackground() メソッドです。
protected String doInBackground(Integer... args) {
// Building Parameters
String parameter1 = "tenant";
String parameter2 = "price";
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("person",parameter1));
params.add(new BasicNameValuePair("price",parameter2));
JSONObject json = jParser.makeHttpRequest(requiredurl, "POST", params);
Log.d("Details", json.toString());
int success = json.getInt("connected");
if (success == 1) {
//blah blah
}
}
makeHttpRequest() メソッド:
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if(method == "POST"){
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
................
....................... // Here the result is extracted and made it to json object
.............................
// return JSON
return jObj; // returning the json object to the method that calls.
}
したがって、上記のコードでは、サーバーへの実際の呼び出しはこの行によって行われます -> HttpResponse httpResponse = httpClient.execute(httpPost);
サーバーが起動しているときはすべて正常に動作しますが、停止していると進行状況バーが継続的に読み込まれます。この状況を何とかしたい。たくさん検索しましたが、この投稿しか見つかりませんでした。私の考えでは、応答を得るために10秒待つことであり、そのタイムアウトを超えた場合は、catch ブロックにメッセージを表示するためにそれを処理する必要があるため、これは私の状況に適しています。しかし、私のコードに従って実装することはできません。誰かがこれについて私を助けてくれますか? とても感謝しています。