HttpClient接口对java.net中的类进行了封装和抽象,适合我们进行一些复杂的操作,使用HttpClient接口的例子:

get方式:

先用HttpGet来构建一个Get方式的Http请求,然后通过HttpClient来执行这个请求,HttpResponse在接收这个请求后给出响应,最后通过httpResponse.getStatusLine().getStatusCode()判断请求是否成功,并处理。

import java.io.IOException;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

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 org.apache.http.util.EntityUtils;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

public class Activity02 extends Activity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.http);

TextView mTextView = (TextView) this.findViewById(R.id.TextView_HTTP);

// http地址

String httpUrl = "http://192.168.1.110:8080/httpget.jsp?par=HttpClient_android_Get";

//HttpGet连接对象

HttpGet httpRequest = new HttpGet(httpUrl);

try

{

//取得HttpClient对象

HttpClient httpclient = new DefaultHttpClient();

//请求HttpClient,取得HttpResponse

HttpResponse httpResponse = httpclient.execute(httpRequest);

//请求成功

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)

{

//取得返回的字符串

String strResult = EntityUtils.toString(httpResponse.getEntity());

mTextView.setText(strResult);

}

else

{

mTextView.setText("请求错误!");

}

}

catch (ClientProtocolException e)

{

mTextView.setText(e.getMessage().toString());

}

catch (IOException e)

{

mTextView.setText(e.getMessage().toString());

}

catch (Exception e)

{

mTextView.setText(e.getMessage().toString());

}

//设置按键事件监听

Button button_Back = (Button) findViewById(R.id.Button_Back);

button_Back.setOnClickListener(new Button.OnClickListener()

{

public void onClick(View v)

{

Intent intent = new Intent();

intent.setClass(Activity02.this, Activity01.class);

startActivity(intent);

Activity02.this.finish();

}

});

}

}

Post方式:

先用一个HttpPost来构建一个Post方式的请求,

然后,使用NameValuePair来保存要传递的参数,可以使用BasicNameValuePair来构造一个要被传递的参数,然后通过add方法添加这个参数到NameValuePair中,

Post方式还需要设置所使用的字符集,最后还Get一样通过HttpClient来请求这个连接,并处理响应。

代码例子如下:

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.NameValuePair;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

public class Activity03 extends Activity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.http);

TextView mTextView = (TextView) this.findViewById(R.id.TextView_HTTP);

// http地址

String httpUrl = "http://192.168.1.110:8080/httpget.jsp";

//HttpPost连接对象

HttpPost httpRequest = new HttpPost(httpUrl);

//使用NameValuePair来保存要传递的Post参数

List params = new ArrayList();

//添加要传递的参数

params.add(new BasicNameValuePair("par", "HttpClient_android_Post"));

try

{

//设置字符集

HttpEntity httpentity = new UrlEncodedFormEntity(params, "gb2312");

//请求httpRequest

httpRequest.setEntity(httpentity);

//取得默认的HttpClient

HttpClient httpclient = new DefaultHttpClient();

//取得HttpResponse

HttpResponse httpResponse = httpclient.execute(httpRequest);

//HttpStatus.SC_OK表示连接成功

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)

{

//取得返回的字符串

String strResult = EntityUtils.toString(httpResponse.getEntity());

mTextView.setText(strResult);

}

else

{

mTextView.setText("请求错误!");

}

}

catch (ClientProtocolException e)

{

mTextView.setText(e.getMessage().toString());

}

catch (IOException e)

{

mTextView.setText(e.getMessage().toString());

}

catch (Exception e)

{

mTextView.setText(e.getMessage().toString());

}

//设置按键事件监听

Button button_Back = (Button) findViewById(R.id.Button_Back);

button_Back.setOnClickListener(new Button.OnClickListener()

{

public void onClick(View v)

{

Intent intent = new Intent();

intent.setClass(Activity03.this, Activity01.class);

startActivity(intent);

Activity03.this.finish();

}

});

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐