zl程序教程

您现在的位置是:首页 >  后端

当前栏目

AndroidHTTP发送请求和接收响应的实例代码

实例响应代码 请求 发送 接收
2023-06-13 09:15:02 时间
添加权限
首先要在manifest中加上访问网络的权限:
复制代码代码如下:

<manifest...>
<uses-permissionandroid:name="android.permission.INTERNET"/>
...
</manifest>

完整的Manifest文件如下:
复制代码代码如下:

<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.httpdemo1"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17"/>
<uses-permissionandroid:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="com.example.httpdemo1.HttpDemo1Activity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>

布局代码如下:
复制代码代码如下:
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".HttpDemo1Activity">
<TextView
android:id="@+id/myWebTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
<Button
android:id="@+id/requestBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="SendRequest"/>
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_above="@id/requestBtn"
android:layout_below="@id/myWebTitle"/>
</RelativeLayout>
activity_http_demo1.xml

主要的代码:
复制代码代码如下:
packagecom.example.httpdemo1;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importorg.apache.http.HttpEntity;
importorg.apache.http.HttpResponse;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.impl.client.DefaultHttpClient;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.webkit.WebView;
importandroid.widget.Button;
publicclassHttpDemo1ActivityextendsActivity
{
privateButtonmSendReqBtn=null;//发送请求的按钮
privateWebViewmWebView=null;//用于显示结果,用载入html字符串的方式显示响应结果,而不是使用WebView自己的方式加载URL
//响应
privateHttpResponsemHttpResponse=null;
//实体
privateHttpEntitymHttpEntity=null;
@Override
protectedvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_http_demo1);
mSendReqBtn=(Button)findViewById(R.id.requestBtn);
mSendReqBtn.setOnClickListener(mSendClickListener);
mWebView=(WebView)findViewById(R.id.webview);
}
privateOnClickListenermSendClickListener=newOnClickListener()
{
@Override
publicvoidonClick(Viewv)
{
//生成一个请求对象
HttpGethttpGet=newHttpGet("http://www.baidu.com/");
//生成一个Http客户端对象
HttpClienthttpClient=newDefaultHttpClient();
//下面使用Http客户端发送请求,并获取响应内容
InputStreaminputStream=null;
try
{
//发送请求并获得响应对象
mHttpResponse=httpClient.execute(httpGet);
//获得响应的消息实体
mHttpEntity=mHttpResponse.getEntity();
//获取一个输入流
inputStream=mHttpEntity.getContent();
BufferedReaderbufferedReader=newBufferedReader(
newInputStreamReader(inputStream));
Stringresult="";
Stringline="";
while(null!=(line=bufferedReader.readLine()))
{
result+=line;
}
//将结果打印出来,可以在LogCat查看
System.out.println(result);
//将内容载入WebView显示
mWebView.getSettings().setDefaultTextEncodingName("UTF-8");
//直接使用mWebView.loadData(result,"text/html","utf-8");会显示找不到网页
//换成下面的方式可以正常显示(但是比较宽,拖动可见百度logo)
mWebView.loadDataWithBaseURL(null,result,"text/html",
"utf-8",null);
//直接载入URL也可以显示页面(但是此例子主要是为了验证响应返回的字符串是否正确,所以不用下面这行代码)
//mWebView.loadUrl("http://www.baidu.com/");
}
catch(Exceptione)
{
e.printStackTrace();
}
finally
{
try
{
inputStream.close();
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
}
};
}

程序运行结果如下:
 
参考资料
Android开发视频教程HTTP操作。——http://www.marsdroid.org
AndroidReference:packageorg.apache.http:
http://developer.android.com/reference/org/apache/http/package-summary.html