HttpGet请求
2015-10-06 15:07
405 查看
在我们平时做的一些项目中,经常会用到连接网络的功能。这里以HttpGet为例子做一个简单的访问百度页面得到其中的代码的例子。 1 首先,需要得到自己要访问的服务器地址
String uriAPI = "http://www.baidu.com";
2 然后创建我们的请求
HttpGet httpRequest = new HttpGet(uriAPI);
3 执行我们的请求之后得到返回的对象
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest); if (httpResponse.getStatusLine().getStatusCode() == 200) { //执行连接成功后的代码 }
/*
完整的代码
*/
package com.hdu.httppost; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import java.io.IOException; public class MainActivity extends ActionBarActivity { private EditText et_load; private Button visit; private String uriAPI = "http://www.baidu.com"; private String result; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 1) { et_load.setText(result); } else if (msg.what == 2) { et_load.setText("连接错误"); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_load = (EditText) findViewById(R.id.et_load); visit = (Button) this.findViewById(R.id.visit); visit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread() { public void run() { HttpGet httpRequest = new HttpGet(uriAPI); try { HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest); if (httpResponse.getStatusLine().getStatusCode() == 200) { result = EntityUtils.toString(httpResponse.getEntity()); handler.sendEmptyMessage(1); } } catch (IOException e) { e.printStackTrace(); } } }.start(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
这里有人可能会问为什么要新建线程来执行呢?这里就涉及到android中的UI线程子线程的关系了,android中,UI的更新只能在主线程中, 然而当执行一些比较花费时间的操作的时候,却不能直接在主线程中进行,因为会阻塞线程,这样就需要新建线程了。所以当我们要更新线程的时候,需要从子线程中发送信息给主线程,通知主线程进行操作,因为要有Handler对象。
相关文章推荐
- 20150924 Web Server(Http服务)
- http的报文结构和状态码的含义
- http的报文结构和状态码的含义
- 基于HTML5的3D网络拓扑树呈现
- TCP滑动窗口与回退N针协议
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管
- 根据图片的网络URL获取Bitmap
- 301/302 http会话跳转
- Java Web添加HTTP服务
- TCP与UDP的区别
- TCP的三次握手和四次挥手
- netperf 而网络性能测量
- TCP的三次握手和四次挥手
- ZOJ 2532 Internship 网络流求关键边
- VMware网络连接方式(Host-only、NAT、Bridged)介绍及NAT环境下静态IP配置
- 手动编译httpd
- Linux网络编程入门 (转载)
- Xcode7中HTTP不能正常请求的解决办法
- http://jinnianshilongnian.iteye.com/blog/2019547
- .NET/MVC-发布到IIS6.1提示未能加载程序集System.Web.Http.WebHost