android http协议post请求方式
方式一:HttpPost(import org.apache.http.client.methods.HttpPost
代码如下:
private Button button1,button2,button3; private TextView textView1; button1.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub //URL? // String uriAPI = "http://www.dubblogs.cc:8751/Android/Test/API/Post/index.php"; String uriAPI = "http://172.20.0.206:8082//TestServelt/login.do"; /*建立HTTP Post连线*/ HttpPost httpRequest =new HttpPost(uriAPI); //Post运作传送变数必须用NameValuePair[]阵列储存 //传参数 服务端获取的方法为request.getParameter("name") List <NameValuePair> params=new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("name","this is post")); try{ //发出HTTP request httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); //取得HTTP response HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest); //若状态码为200 ok if(httpResponse.getStatusLine().getStatusCode()==200){ //取出回应字串 String strResult=EntityUtils.toString(httpResponse.getEntity()); textView1.setText(strResult); }else{ textView1.setText("Error Response"+httpResponse.getStatusLine().toString()); } }catch(ClientProtocolException e){ textView1.setText(e.getMessage().toString()); e.printStackTrace(); } catch (UnsupportedEncodingException e) { textView1.setText(e.getMessage().toString()); e.printStackTrace(); } catch (IOException e) { textView1.setText(e.getMessage().toString()); e.printStackTrace(); } } });
方式二:HttpURLConnection、URL(import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;)
private void httpUrlConnection(){ try{ String pathUrl = "http://172.20.0.206:8082/TestServelt/login.do"; //建立连接 URL url=new URL(pathUrl); HttpURLConnection httpConn=(HttpURLConnection)url.openConnection(); ////设置连接属性 httpConn.setDoOutput(true);//使用 URL 连接进行输出 httpConn.setDoInput(true);//使用 URL 连接进行输入 httpConn.setUseCaches(false);//忽略缓存 httpConn.setRequestMethod("POST");//设置URL请求方法 String requestString = "客服端要以以流方式发送到服务端的数据..."; //设置请求属性 //获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致 byte[] requestStringBytes = requestString.getBytes(ENCODING_UTF_8); httpConn.setRequestProperty("Content-length", "" + requestStringBytes.length); httpConn.setRequestProperty("Content-Type", "application/octet-stream"); httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接 httpConn.setRequestProperty("Charset", "UTF-8"); // String name=URLEncoder.encode("黄武艺","utf-8"); httpConn.setRequestProperty("NAME", name); //建立输出流,并写入数据 OutputStream outputStream = httpConn.getOutputStream(); outputStream.write(requestStringBytes); outputStream.close(); //获得响应状态 int responseCode = httpConn.getResponseCode(); if(HttpURLConnection.HTTP_OK == responseCode){//连接成功 //当正确响应时处理数据 StringBuffer sb = new StringBuffer(); String readLine; BufferedReader responseReader; //处理响应流,必须与服务器响应流输出的编码一致 responseReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), ENCODING_UTF_8)); while ((readLine = responseReader.readLine()) != null) { sb.append(readLine).append("\n"); } responseReader.close(); tv.setText(sb.toString()); } }catch(Exception ex){ ex.printStackTrace(); } }
==================================================================================
package alex.reader.ebook.bam; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.http.HttpResponse; 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.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.params.HttpClientParams; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.EditText; public class SimpleClient extends Activity { private HttpParams httpParams; private HttpClient httpClient; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_client); EditText editText = (EditText) this.findViewById(R.id.EditText01); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("email", "[email protected]")); params.add(new BasicNameValuePair("password", "954619")); params.add(new BasicNameValuePair("remember", "1")); params.add(new BasicNameValuePair("from", "kx")); params.add(new BasicNameValuePair("login", "登 录")); params.add(new BasicNameValuePair("refcode", "")); params.add(new BasicNameValuePair("refuid", "0")); Map params2 = new HashMap(); params2.put("hl", "zh-CN"); params2.put("source", "hp"); params2.put("q", "haha"); params2.put("aq", "f"); params2.put("aqi", "g10"); params2.put("aql", ""); params2.put("oq", ""); String url2 = "http://www.google.cn/search"; String url = "http://wap.kaixin001.com/home/"; getHttpClient(); editText.setText(doPost(url, params)); // editText.setText(doGet(url2, params2)); } public String doGet(String url, Map params) { /* 建立HTTPGet对象 */ String paramStr = ""; Iterator iter = params.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); paramStr += paramStr = "&" + key + "=" + val; } if (!paramStr.equals("")) { paramStr = paramStr.replaceFirst("&", "?"); url += paramStr; } HttpGet httpRequest = new HttpGet(url); String strResult = "doGetError"; try { /* 发送请求并等待响应 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 读返回数据 */ strResult = EntityUtils.toString(httpResponse.getEntity()); } else { strResult = "Error Response: " + httpResponse.getStatusLine().toString(); } } catch (ClientProtocolException e) { strResult = e.getMessage().toString(); e.printStackTrace(); } catch (IOException e) { strResult = e.getMessage().toString(); e.printStackTrace(); } catch (Exception e) { strResult = e.getMessage().toString(); e.printStackTrace(); } Log.v("strResult", strResult); return strResult; } public String doPost(String url, List<NameValuePair> params) { /* 建立HTTPPost对象 */ HttpPost httpRequest = new HttpPost(url); String strResult = "doPostError"; try { /* 添加请求参数到请求对象 */ httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); /* 发送请求并等待响应 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 读返回数据 */ strResult = EntityUtils.toString(httpResponse.getEntity()); } else { strResult = "Error Response: " + httpResponse.getStatusLine().toString(); } } catch (ClientProtocolException e) { strResult = e.getMessage().toString(); e.printStackTrace(); } catch (IOException e) { strResult = e.getMessage().toString(); e.printStackTrace(); } catch (Exception e) { strResult = e.getMessage().toString(); e.printStackTrace(); } Log.v("strResult", strResult); return strResult; } public HttpClient getHttpClient() { // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的) this.httpParams = new BasicHttpParams(); // 设置连接超时和 Socket 超时,以及 Socket 缓存大小 HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSocketBufferSize(httpParams, 8192); // 设置重定向,缺省为 true HttpClientParams.setRedirecting(httpParams, true); // 设置 user agent String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6"; HttpProtocolParams.setUserAgent(httpParams, userAgent); // 创建一个 HttpClient 实例 // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient httpClient = new DefaultHttpClient(httpParams); return httpClient; } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。