AndroidからHTTP Requestする方法
AndroidからHTTP Requestをする方法は以下の通り.
HttpPostクラスを使う.AndroidからXMLをPOSTすることはあまりないらしい.普通はJSONを使う.
JSONとXMLの相互変換ライブラリがあったはずだから必要ならそれを使ったほうが手軽かも.
AndroidManifest.xmlにandroid.permissions.INTERNETを設定する必要がある.
Androidエミュレータから外部APIに接続する場合,localhostを指定してはいけない.locaohostはエミュレータ自身になるため.
ホストマシンは10.0.2.2というアドレスが割り当てられる.
HttpPost httpPost = new HttpPost(url); DefaultHttpClient client = new DefaultHttpClient(); List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("Json", jsonString)); try{ httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair, "utf-8")); HttpResponse response = client.execute(httpPost); System.out.println(response.getStatusLine()); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { }
UIスレッド上でネットワークアクセスしようとするとNetworkOnMainThreadExceptionが発生する.
通常はスレッドの無名関数内でネットワークアクセスを実行する.
(new Thread(new Runnable() { @Override public void run(){ //ネットワークアクセスを伴う処理 } })).start();