2011-09-12 13 views
0

ローカルサーバーにデータを投稿するために "http://xxxx/myfolder/values.aspx"のようなローカルIPアドレスを使用している間、私はアンドロイドにURLのhttppostリクエストを送信するコードを作成しました。下記の書かれたvalues.aspxコードが正常に動作し、簡単にローカルホストにデータを送信するための仮想ディレクトリが作成されます。実際のURLがhttpリクエストで指定されているとき、アプリケーションはハングし、エラーまたは例外は返されません。問題が起きても結果は得られません。関連するPOSTで返信してください。Androidのアプリケーションは、エミュレータ上でハングアップ?

============================================== ===============

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://www.xyz.com/myfolder/values.aspx"); 

    enter code here 

try 
{ 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
nameValuePairs.add(new BasicNameValuePair("data",txtdis.getText().toString() 
+txtsys.getText().toString()+txtpulse.getText().toString()+txttemp.getText().toString())); 

nameValuePairs.add(new BasicNameValuePair("reg", "asdfghjklpoiuytr")); 

    AbstractHttpEntity ent = new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8);  
    httppost.setEntity(ent); 

    httppost.addHeader("data","vacant"); 
    httppost.addHeader("reg","vacant"); 
    HttpResponse response = httpclient.execute(httppost); 

if (ent != null) 
{ 
Log.i("RESPONSE", response.getStatusLine().toString()); 
} 

HttpEntity resEntity = response.getEntity(); 
if (resEntity != null) 
{  
            Log.i("RESPONSE",EntityUtils.toString(resEntity)); 
} 


Intent browse = new Intent(Intent.ACTION_VIEW , Uri.parse("http://192.168.2.50/BAN_app/getvalues1.aspx")); 

startActivity(browse); 

答えて

2

このリクエストはUIスレッドで実行します。これは、要求の時間のための全体のUIをブロックになり、そして、あなたの要求は5秒以上かかる場合App Not Responding (ANR)ダイアログをトリガします。

常にネットワーク呼び出しや、別のスレッドでの作業-重いメソッドを実行します。 AsyncTask クラスは、この仕事を得るための素晴らしいと使いやすいツールです。

関連する問題