HTTPClient模块的HttpGet和HttpPost

无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。

1.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。

2.使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。

3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。

如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。

   HttpGet

[java] view plain copy

  1. public String doGet()
  2. {
  3. String uriAPI = "http://XXXXX?str=I+am+get+String";
  4. String result= "";
  5. //      HttpGet httpRequst = new HttpGet(URI uri);
  6. //      HttpGet httpRequst = new HttpGet(String uri);
  7. //      创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。
  8. HttpGet httpRequst = new HttpGet(uriAPI);
  9. //      new DefaultHttpClient().execute(HttpUriRequst requst);
  10. try {
  11. //使用DefaultHttpClient类的execute方法发送HTTP GET请求,并返回HttpResponse对象。
  12. HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);//其中HttpGet是HttpUriRequst的子类
  13. if(httpResponse.getStatusLine().getStatusCode() == 200)
  14. {
  15. HttpEntity httpEntity = httpResponse.getEntity();
  16. result = EntityUtils.toString(httpEntity);//取出应答字符串
  17. // 一般来说都要删除多余的字符
  18. result.replaceAll("\r", "");//去掉返回结果中的"\r"字符,否则会在结果字符串后面显示一个小方格
  19. }
  20. else
  21. httpRequst.abort();
  22. } catch (ClientProtocolException e) {
  23. // TODO Auto-generated catch block
  24. e.printStackTrace();
  25. result = e.getMessage().toString();
  26. } catch (IOException e) {
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. result = e.getMessage().toString();
  30. }
  31. return result;
  32. }

  HttpPost

如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。

[java] view plain copy

  1. public String doPost()
  2. {
  3. String uriAPI = "http://XXXXXX";//Post方式没有参数在这里
  4. String result = "";
  5. HttpPost httpRequst = new HttpPost(uriAPI);//创建HttpPost对象
  6. List <NameValuePair> params = new ArrayList<NameValuePair>();
  7. params.add(new BasicNameValuePair("str", "I am Post String"));
  8. try {
  9. httpRequst.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
  10. HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);
  11. if(httpResponse.getStatusLine().getStatusCode() == 200)
  12. {
  13. HttpEntity httpEntity = httpResponse.getEntity();
  14. result = EntityUtils.toString(httpEntity);//取出应答字符串
  15. }
  16. } catch (UnsupportedEncodingException e) {
  17. // TODO Auto-generated catch block
  18. e.printStackTrace();
  19. result = e.getMessage().toString();
  20. }
  21. catch (ClientProtocolException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. result = e.getMessage().toString();
  25. }
  26. catch (IOException e) {
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. result = e.getMessage().toString();
  30. }
  31. return result;
  32. }

以发送连接请求时,需要设置链接超时和请求超时等参数,否则会长期停止或者崩溃。

[java] view plain copy

  1. HttpParams httpParameters = new BasicHttpParams();
  2. HttpConnectionParams.setConnectionTimeout(httpParameters, 10*1000);//设置请求超时10秒
  3. HttpConnectionParams.setSoTimeout(httpParameters, 10*1000); //设置等待数据超时10秒
  4. HttpConnectionParams.setSocketBufferSize(params, 8192);
  5. HttpClient httpclient = new DefaultHttpClient(httpParameters); //此时构造DefaultHttpClient时将参数传入
  6. 由于是联网,在AndroidManifest.xml中添加网络连接的权限
  7. <uses-permission android:name="android.permission.INTERNET"/>
时间: 2024-08-29 13:42:12

HTTPClient模块的HttpGet和HttpPost的相关文章

java最简单的方式实现httpget和httppost请求

java实现httpget和httppost请求的方式多种多样,个人总结了一种最简单的方式,仅仅需几行代码,就能够完美的实现. 此处须要用到两个jar包,httpclient-4.3.1.jar.httpcore-4.3.jar,各位能够到网上自己下载,或者到我的附件里下载,以下先贴上httpget请求的代码: String url = ""; HttpGet request = new HttpGet(url); try { HttpResponse response = HttpC

转-浅谈HTTP-GET 、 HTTP-POST 和SOAP

原文链接:浅谈HTTP-GET . HTTP-POST 和SOAP 1.HTTP-GET 和 HTTP-POST HTTP-GET和HTTP-POST是标准协议,他们使用HTTP(超文本传输协议)谓词(谓词是指条件表达式的求值返回真或假的过程.)对参数金星编码并将参数作为名称/值对传递,还使用关联的请求语义.每个协议都包含一系列HTTP请求标头,HTTP请求标头及其他一些信息定义客户端向服务器请求哪些内容,哪个服务器用一系列HTTP响应标头和所请求的数据进行响应. HTTP-GET 使用 MIM

Android中使用HttpGet和HttpPost访问HTTP资源

需求:用户登录(name:用户名,pwd:密码) (一)HttpGet :doGet()方法//doGet():将参数的键值对附加在url后面来传递 [java] view plaincopy public String getResultForHttpGet(String name,String pwd) throws ClientProtocolException, IOException{ //服务器  :服务器项目  :servlet名称 String path="http://192.

Android:HttpGet与HttpPost

AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET"/> activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&

.net在Controller里的方法添加[HttpGet]和[HttpPost]

前端用post过来,Controller就要用[HttpPost],前端用get,Controller就要用[HttpGet],或者不管前端用什么,Controller都不加这些. 前端用post $.ajax({ url: "/CommRecord/LockSendESMS", type: "post", data: { id: data.ID, isLock: isLock }, success: function (data) { } }); Controll

HttpGet和HttpPost

1 package net.blogjava.mobile; 2 3 import java.net.HttpURLConnection; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 import org.apache.http.HttpResponse; 8 import org.apache.http.NameValuePair; 9 import org.apache.http.client.entity.UrlEn

HttpGet和HttpPost请求

internal static string HttpPost(string Url, string postDataStr) { string retString = string.Empty; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "POST"; request.ContentType = "application/x-www-form

linux下HttpGet、HttpPost的C++实现

#include "HttpRequest.h" int main() { HttpRequest* Http = new HttpRequest; char* str = (char*)malloc(BUFSIZE); memset(str, 0, BUFSIZE); if(Http->HttpGet("http://www.baidu.com", str)) { printf("%s\n", str); } else { printf(

HttpGet和HttpPost处理重定向的区别

get方法默认会处理302的重定向,response获取到的页面其实是重定向以后的页面,通过response.getStatusLine(),取到的值是200. 通过设置可以用post方法去请求或者把get自动处理重定向禁掉. 要禁用get方法自动处理重定向,需要设一下参数,如: Java代码   HttpClient httpclient = new DefaultHttpClient(); HttpParams params = httpclient.getParams(); params.