AndroidサービスでDefaultHttpClientを実行しましたが、エラーが発生しても結果が得られません。出来ますか?サーフィンを通じて、サービスとしてHTTPClientを作成しましたが、サービスでHTTPClientの呼び出しを見つけることができません。助けを楽しみにしています。
2 に答える
JavaでHTTPクライアント、投稿、および応答を使用する方法を調べましたか?AsyncTask doInBackground関数で使用する可能性のある、基本的な例を次に示します。
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
//in doInBackground() or other thread outside of main
InputStream myStream;
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url_select);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
try {
nameValuePairs.add(new BasicNameValuePair("currentUser", currentUserVar));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
myStream = response.getEntity().getContent();
} catch (ClientProtocolException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace(); }
はい、Androidサービスで「DefaultHttpClientを実行」できます。結果(応答コード、応答など)を他のコンポーネント(アクティビティなど)に戻すには、いくつかの方法があります。
ResultReceiverを使用できます。
または、オットーのようなサービスバスを使用することもできます(バスについて少し学び、セットアップする場合は、これははるかに簡単です。サービスだけでなく、多くの場所で役立ちます)。
あなたが質問をもう少し明確にする必要があるけれども本当に助けるために。サービスはすでに機能していてHTTPリクエストを作成していて、結果を他のコンポーネントに取得する必要があるだけですか、それともDefaultHTTPClientをサービスとして機能させることができないのでしょうか?
また、スレッドの処理を自分で処理したくない場合は、IntentServiceを調べる必要があります。多くの場合、「サービス内のHTTPクライアント」のようなものの優れた候補です。
この質問には、より一般的な情報があります:Android-バックグラウンドサービスとしてのhttpclient