android http协议post请求方式
16lz
2022-05-25
方式一:HttpPost(import org.apache.http.client.methods.HttpPost
Java代码
方式二:HttpURLConnection、URL(import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;)
Java代码
==================================================================================
Java代码
转载 http://blog.csdn.net/firewings_r/archive/2010/03/12/5374851.aspx
Java代码
- 代码如下:
- privateButtonbutton1,button2,button3;
- privateTextViewtextView1;
- button1.setOnClickListener(newButton.OnClickListener(){
- @Override
- publicvoidonClick(Viewarg0){
- //TODOAuto-generatedmethodstub
- //URLַ
- //StringuriAPI="http://www.dubblogs.cc:8751/Android/Test/API/Post/index.php";
- StringuriAPI="http://172.20.0.206:8082//TestServelt/login.do";
- /*建立HTTPPost连线*/
- HttpPosthttpRequest=newHttpPost(uriAPI);
- //Post运作传送变数必须用NameValuePair[]阵列储存
- //传参数服务端获取的方法为request.getParameter("name")
- List<NameValuePair>params=newArrayList<NameValuePair>();
- params.add(newBasicNameValuePair("name","thisispost"));
- try{
- //发出HTTPrequest
- httpRequest.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8));
- //取得HTTPresponse
- HttpResponsehttpResponse=newDefaultHttpClient().execute(httpRequest);
- //若状态码为200ok
- if(httpResponse.getStatusLine().getStatusCode()==200){
- //取出回应字串
- StringstrResult=EntityUtils.toString(httpResponse.getEntity());
- textView1.setText(strResult);
- }else{
- textView1.setText("ErrorResponse"+httpResponse.getStatusLine().toString());
- }
- }catch(ClientProtocolExceptione){
- textView1.setText(e.getMessage().toString());
- e.printStackTrace();
- }catch(UnsupportedEncodingExceptione){
- textView1.setText(e.getMessage().toString());
- e.printStackTrace();
- }catch(IOExceptione){
- textView1.setText(e.getMessage().toString());
- e.printStackTrace();
- }
- }
- });
方式二:HttpURLConnection、URL(import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;)
Java代码
- privatevoidhttpUrlConnection(){
- try{
- StringpathUrl="http://172.20.0.206:8082/TestServelt/login.do";
- //建立连接
- URLurl=newURL(pathUrl);
- HttpURLConnectionhttpConn=(HttpURLConnection)url.openConnection();
- ////设置连接属性
- httpConn.setDoOutput(true);//使用URL连接进行输出
- httpConn.setDoInput(true);//使用URL连接进行输入
- httpConn.setUseCaches(false);//忽略缓存
- httpConn.setRequestMethod("POST");//设置URL请求方法
- StringrequestString="客服端要以以流方式发送到服务端的数据...";
- //设置请求属性
- //获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
- 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");
- //
- Stringname=URLEncoder.encode("黄武艺","utf-8");
- httpConn.setRequestProperty("NAME",name);
- //建立输出流,并写入数据
- OutputStreamoutputStream=httpConn.getOutputStream();
- outputStream.write(requestStringBytes);
- outputStream.close();
- //获得响应状态
- intresponseCode=httpConn.getResponseCode();
- if(HttpURLConnection.HTTP_OK==responseCode){//连接成功
- //当正确响应时处理数据
- StringBuffersb=newStringBuffer();
- StringreadLine;
- BufferedReaderresponseReader;
- //处理响应流,必须与服务器响应流输出的编码一致
- responseReader=newBufferedReader(newInputStreamReader(httpConn.getInputStream(),ENCODING_UTF_8));
- while((readLine=responseReader.readLine())!=null){
- sb.append(readLine).append("\n");
- }
- responseReader.close();
- tv.setText(sb.toString());
- }
- }catch(Exceptionex){
- ex.printStackTrace();
- }
- }
==================================================================================
Java代码
- packagealex.reader.ebook.bam;
- importjava.io.IOException;
- importjava.util.ArrayList;
- importjava.util.HashMap;
- importjava.util.Iterator;
- importjava.util.List;
- importjava.util.Map;
- importorg.apache.http.HttpResponse;
- importorg.apache.http.NameValuePair;
- importorg.apache.http.client.ClientProtocolException;
- importorg.apache.http.client.HttpClient;
- importorg.apache.http.client.entity.UrlEncodedFormEntity;
- importorg.apache.http.client.methods.HttpGet;
- importorg.apache.http.client.methods.HttpPost;
- importorg.apache.http.client.params.HttpClientParams;
- importorg.apache.http.impl.client.DefaultHttpClient;
- importorg.apache.http.message.BasicNameValuePair;
- importorg.apache.http.params.BasicHttpParams;
- importorg.apache.http.params.HttpConnectionParams;
- importorg.apache.http.params.HttpParams;
- importorg.apache.http.params.HttpProtocolParams;
- importorg.apache.http.protocol.HTTP;
- importorg.apache.http.util.EntityUtils;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.util.Log;
- importandroid.widget.EditText;
- publicclassSimpleClientextendsActivity{
- privateHttpParamshttpParams;
- privateHttpClienthttpClient;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.simple_client);
- EditTexteditText=(EditText)this.findViewById(R.id.EditText01);
- List<NameValuePair>params=newArrayList<NameValuePair>();
- params.add(newBasicNameValuePair("email","firewings.r@gmail.com"));
- params.add(newBasicNameValuePair("password","954619"));
- params.add(newBasicNameValuePair("remember","1"));
- params.add(newBasicNameValuePair("from","kx"));
- params.add(newBasicNameValuePair("login","登录"));
- params.add(newBasicNameValuePair("refcode",""));
- params.add(newBasicNameValuePair("refuid","0"));
- Mapparams2=newHashMap();
- 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","");
- Stringurl2="http://www.google.cn/search";
- Stringurl="http://wap.kaixin001.com/home/";
- getHttpClient();
- editText.setText(doPost(url,params));
- //editText.setText(doGet(url2,params2));
- }
- publicStringdoGet(Stringurl,Mapparams){
- /*建立HTTPGet对象*/
- StringparamStr="";
- Iteratoriter=params.entrySet().iterator();
- while(iter.hasNext()){
- Map.Entryentry=(Map.Entry)iter.next();
- Objectkey=entry.getKey();
- Objectval=entry.getValue();
- paramStr+=paramStr="&"+key+"="+val;
- }
- if(!paramStr.equals("")){
- paramStr=paramStr.replaceFirst("&","?");
- url+=paramStr;
- }
- HttpGethttpRequest=newHttpGet(url);
- StringstrResult="doGetError";
- try{
- /*发送请求并等待响应*/
- HttpResponsehttpResponse=httpClient.execute(httpRequest);
- /*若状态码为200ok*/
- if(httpResponse.getStatusLine().getStatusCode()==200){
- /*读返回数据*/
- strResult=EntityUtils.toString(httpResponse.getEntity());
- }else{
- strResult="ErrorResponse:"
- +httpResponse.getStatusLine().toString();
- }
- }catch(ClientProtocolExceptione){
- strResult=e.getMessage().toString();
- e.printStackTrace();
- }catch(IOExceptione){
- strResult=e.getMessage().toString();
- e.printStackTrace();
- }catch(Exceptione){
- strResult=e.getMessage().toString();
- e.printStackTrace();
- }
- Log.v("strResult",strResult);
- returnstrResult;
- }
- publicStringdoPost(Stringurl,List<NameValuePair>params){
- /*建立HTTPPost对象*/
- HttpPosthttpRequest=newHttpPost(url);
- StringstrResult="doPostError";
- try{
- /*添加请求参数到请求对象*/
- httpRequest.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8));
- /*发送请求并等待响应*/
- HttpResponsehttpResponse=httpClient.execute(httpRequest);
- /*若状态码为200ok*/
- if(httpResponse.getStatusLine().getStatusCode()==200){
- /*读返回数据*/
- strResult=EntityUtils.toString(httpResponse.getEntity());
- }else{
- strResult="ErrorResponse:"
- +httpResponse.getStatusLine().toString();
- }
- }catch(ClientProtocolExceptione){
- strResult=e.getMessage().toString();
- e.printStackTrace();
- }catch(IOExceptione){
- strResult=e.getMessage().toString();
- e.printStackTrace();
- }catch(Exceptione){
- strResult=e.getMessage().toString();
- e.printStackTrace();
- }
- Log.v("strResult",strResult);
- returnstrResult;
- }
- publicHttpClientgetHttpClient(){
- //创建HttpParams以用来设置HTTP参数(这一部分不是必需的)
- this.httpParams=newBasicHttpParams();
- //设置连接超时和Socket超时,以及Socket缓存大小
- HttpConnectionParams.setConnectionTimeout(httpParams,20*1000);
- HttpConnectionParams.setSoTimeout(httpParams,20*1000);
- HttpConnectionParams.setSocketBufferSize(httpParams,8192);
- //设置重定向,缺省为true
- HttpClientParams.setRedirecting(httpParams,true);
- //设置useragent
- StringuserAgent="Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.2)Gecko/20100115Firefox/3.6";
- HttpProtocolParams.setUserAgent(httpParams,userAgent);
- //创建一个HttpClient实例
- //注意HttpClienthttpClient=newHttpClient();是CommonsHttpClient
- //中的用法,在Android1.5中我们需要使用Apache的缺省实现DefaultHttpClient
- httpClient=newDefaultHttpClient(httpParams);
- returnhttpClient;
- }
- }
转载 http://blog.csdn.net/firewings_r/archive/2010/03/12/5374851.aspx
更多相关文章
- ANDROID图片压缩代码
- android 方式实现imageview圆角
- Android(安卓)ViewPager中嵌套Banner 导致水平滑动冲突
- Android(安卓)如何在Java代码中手动设置控件的marginleft
- Android保持屏幕常亮的方法总结
- Android如何使用selector设置RelativeLayout的背景
- Android(安卓)Glide设置图片圆角,亲测有效
- Android(安卓)ViewGroup系列控件的使用
- Android动态设置View的位置和大小