public class Test extends Activity {
    /** Called when the activity is first created. */
   
  
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button bb=(Button)findViewById(R.id.button);
      
        //EditText tt=(EditText)findViewById(R.id.view);
        bb.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

 

run();


}
});
        
    }
   void run() 
   {
  
 try {
   // 创建一个默认的HttpClient
        HttpClient httpclient = new DefaultHttpClient();
// 创建一个GET请求
   HttpGet request = new HttpGet("http://www.baidu.com/");
  
      HttpResponse response = httpclient.execute(request);      
openOptionsDialog();
    Log.v("response text", response.getEntity().toString() );
    } catch (ClientProtocolException e) {
       e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
   }
   
   public void openOptionsDialog() {
// TODO Auto-generated method stub
new AlertDialog.Builder(this).setTitle( "aaa")
.setMessage("aaa")
.show();
}
}
红色,那句HttpResponse response = httpclient.execute(request);  就抛出异常了,请问是哪里错了。
能给我一个可以运行的 httpget 的例子吗?

解决方案 »

  1.   

    你这个代码没问题啊,看下权限设置没有。 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
      

  2.   

    ]
     WARN/System.err(285): java.net.UnknownHostException: www.baidu.com
     WARN/System.err(285):     at java.net.InetAddress.lookupHostByName(InetAddress.java:513)
     WARN/System.err(285):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:278)
     WARN/System.err(285):     at java.net.InetAddress.getAllByName(InetAddress.java:242)
     WARN/System.err(285):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
     WARN/System.err(285):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
     WARN/System.err(285):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
     WARN/System.err(285):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
     WARN/System.err(285):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
     WARN/System.err(285):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
     WARN/System.err(285):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
     WARN/System.err(285):     at dome.android.Test.run(Test.java:69)
     WARN/System.err(285):     at dome.android.Test$1.onClick(Test.java:53)
     WARN/System.err(285):     at android.view.View.performClick(View.java:2408)
     WARN/System.err(285):     at android.view.View$PerformClick.run(View.java:8816)
     WARN/System.err(285):     at android.os.Handler.handleCallback(Handler.java:587)
     WARN/System.err(285):     at android.os.Handler.dispatchMessage(Handler.java:92)
     WARN/System.err(285):     at android.os.Looper.loop(Looper.java:123)
     WARN/System.err(285):     at android.app.ActivityThread.main(ActivityThread.java:4627)
     WARN/System.err(285):     at java.lang.reflect.Method.invokeNative(Native Method)
     WARN/System.err(285):     at java.lang.reflect.Method.invoke(Method.java:521)
     WARN/System.err(285):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
     WARN/System.err(285):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
     WARN/System.err(285):     at dalvik.system.NativeStart.main(Native Method)
      

  3.   

    1、我是用eclipse 编写的android程序,
    2、2.2的虚拟机, 2.2的开发包(API). 
    3、<uses-permission android:name="android.permission.INTERNET"></uses-permission> 我也注册了,
    4、httpclient的包,只是程序提示引入,我才引入。
    5、虚拟机能可以上网。
    我只做了这些,还要其他的配置吗?import java.io.IOException;import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;import android.app.Activity;
    import android.app.AlertDialog;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button; 
      

  4.   

    看日志好象是DNS出错了。你用手机的系统浏览器,看看能不能访问百度。
      

  5.   

    没仔细看你的问题
    但是我以前做这个用例的时候,URL后面总被莫名其妙的多加一个斜杠导致无法访问。
    你观察一下最终发送的URL是什么
      

  6.   

    public String intermessage(String str1, String str2) {
    String url = "http://10.1.49.137:8080/Good/TestServlet";
    HttpConnect httpConnect = new HttpConnect(url, context);
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("meetid", str1));
    params.add(new BasicNameValuePair("name", str2));
    params.add(new BasicNameValuePair("username", LoginActivity.username));
    String result = httpConnect.getDataAsString(params);
    return result;
    }public String getDataAsString(List<NameValuePair> params) {
    String result = null;
    try {
    httpRequest = new HttpPost(url);
    httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
    httpResponse = httpClient.execute(httpRequest);
    if (200 == httpResponse.getStatusLine().getStatusCode()) {
    result = EntityUtils.toString(httpResponse.getEntity());
    System.out.println("取得返回值" + result);
    if (result.equals(YES)) {
    return YES;
    } else if (result.equals(NO)) {
    return NO;
    }
    }
    } catch (IOException e) {
    return "error";
    }
    return NO;
    }
      

  7.   

    tt.setText(""+request.getURI()); 
    输出是 :http://www.baidu.com/
    你有类似的用例吗? 能给我一个get的简单一些的用例?
      

  8.   

    你好,eclipse 提示没有HttpConnect类。
      

  9.   


    。。那个类是我写的啊,你看关键代码就可以了哦。
    public HttpConnect(String url, Context context) {
    this.url = url;
    httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParams, 15000);
    HttpConnectionParams.setSoTimeout(httpParams, 15000);
    httpClient = new DefaultHttpClient(httpParams);
    }
    getDataAsString也是HttpConnect里面我自己封装的方法。
      

  10.   


    不是吧。。我也觉得可以运行的,我是学了一点java上的httpclient在来看android的。
    请问,你的虚拟机是什么版本的,需要什么设置吗?
      

  11.   

    我用虚拟机,和手机,都跑了一遍,
    HttpResponse response = httpclient.execute(request);io就抛出了异常。唉,痛苦啊。
      

  12.   

    模拟器能上网的话,设置一下dns,把dns设置成备用的那个dns
      

  13.   

    LZ,搞定没?我也遇到了,求help
      

  14.   

    1. <uses-permission android:name="android.permission.INTERNET" />
    2. 4.0以上就不允许在UI线程里面进行网络,是涉及到url操作的时候,访问网络不能在主程序中运行.