2012-03-08 10 views
2

私は私のPHPウェブサイトと対話するために作成しようとしているAndroidアプリケーション用にこのコードを用意しています。 android.permission.INTERNETアクセス許可が有効になっており、「ERROR」というトーストが作成され続けます。ウェブサイトのコンテンツの代わりにここに私の唯一のjavaファイルです:Androidの簡易HTTPリクエストですか?

package com.http.request; 

import java.io.IOException; 

import org.apache.http.HttpResponse; 
import org.apache.http.HttpStatus; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class HttprequestActivity extends Activity { 
    /** Called when the activity is first created. */ 

    private String doHTTPRequest(String url){ 
     String results = "ERROR"; 
     try 
     { 
      HttpClient hc = new DefaultHttpClient(); 
      HttpPost post = new HttpPost(url); 

      HttpResponse rp = hc.execute(post); 

      if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
      { 
       results = EntityUtils.toString(rp.getEntity()); 
      } 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 
     return results; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     String results = doHTTPRequest("http://www.yahoo.com"); 
     Toast.makeText(getApplicationContext(), results, Toast.LENGTH_LONG).show(); 
    } 
} 
+0

あなたのアプリはどのAndroidバージョンで動作していますか? – yorkw

答えて

3

私がスローされた例外がある場合は、サーバーには、潜在的可能性にIOException

  • の原因を調査する

    1. 、ことを確認してくださいだろう非200応答コードを返します。

    いくつかのブレークポイントを入れて、そこに何が起こっているかを見てください。私の賭けは応答コードにあります。

  • +0

    エミュレータまたはデバイスがインターネットに接続されていますか?そのデバイスでyahoo.comを閲覧できるかどうかを確認してください。 –

    1

    これは、Toast()が表示する独自の「エラー」文字列です。あなたが許可されていないメインスレッドに接続しようとして、例外がスローされ

    catch(IOException e){ 
         result = "ERROR IOException"; 
         e.printStackTrace(); 
        } 
    

    した方が良いの変化

    catch(IOException e){ 
         e.printStackTrace(); 
        } 
    

    。スレッドにdoHTTPRequest()を入れてください。AsyncTask