zoukankan      html  css  js  c++  java
  • android中HttpClient的应用(POST方法)

    首先在http://hc.apache.org/downloads.cgi下载HttpClient包

    直接看代码

      1 import android.os.Handler;
      2 import android.os.Message;
      3 import android.support.v7.app.AppCompatActivity;
      4 import android.os.Bundle;
      5 import android.util.Log;
      6 import android.view.View;
      7 import android.widget.TextView;
      8 
      9 import com.google.gson.Gson;
     10 import com.google.gson.reflect.TypeToken;
     11 
     12 import org.apache.http.HttpEntity;
     13 import org.apache.http.HttpResponse;
     14 import org.apache.http.HttpStatus;
     15 import org.apache.http.NameValuePair;
     16 import org.apache.http.client.ClientProtocolException;
     17 import org.apache.http.client.HttpClient;
     18 import org.apache.http.client.entity.UrlEncodedFormEntity;
     19 import org.apache.http.client.methods.HttpGet;
     20 import org.apache.http.client.methods.HttpPost;
     21 import org.apache.http.client.utils.URLEncodedUtils;
     22 import org.apache.http.impl.client.DefaultHttpClient;
     23 import org.apache.http.message.BasicNameValuePair;
     24 import org.apache.http.protocol.HTTP;
     25 import org.apache.http.util.EntityUtils;
     26 
     27 import java.io.IOException;
     28 import java.io.UnsupportedEncodingException;
     29 import java.lang.reflect.Type;
     30 import java.util.ArrayList;
     31 import java.util.LinkedList;
     32 import java.util.List;
     33 
     34 public class MainActivity extends AppCompatActivity {
     35 
     36     @Override
     37     protected void onCreate(Bundle savedInstanceState) {
     38         super.onCreate(savedInstanceState);
     39         setContentView(R.layout.activity_main);
     40         // 开启一个子线程,进行网络操作,等待有返回结果,使用handler通知UI
     41         new Thread(networkTask).start();
     42 
     43     }
     44 
     45     Handler handler = new Handler() {
     46         @Override
     47         public void handleMessage(Message msg) {
     48             super.handleMessage(msg);
     49             Bundle data = msg.getData();
     50             String val = data.getString("value");
     51             Log.i("mylog", "请求结果为-->" + val);
     52             // TODO
     53             // UI界面的更新等相关操作
     54         }
     55     };
     56 
     57     /**
     58      * 网络操作相关的子线程
     59      */
     60     Runnable networkTask = new Runnable() {
     61         @Override
     62         public void run() {
     63             // TODO
     64             // 在这里进行 http request.网络请求相关操作
     65             String TAG = "ABC";
     66 
     67             //baseUrl
     68             String url = "http://192.168.8.7/insert.php";
     69 
     70             HttpPost request = new HttpPost(url);
     71 
     72             //先将参数放入List,再对参数进行URL编码
     73             List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
     74             params.add(new BasicNameValuePair("firstname", "这个是安卓"));
     75             params.add(new BasicNameValuePair("lastname", "这是安卓加进去的"));
     76             params.add(new BasicNameValuePair("age", "66"));
     77 
     78             try {
     79                 HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
     80 
     81                 request.setEntity(entity);
     82 
     83                 HttpClient client = new DefaultHttpClient();
     84 
     85                 HttpResponse response = client.execute(request);
     86 
     87                 Log.e(TAG, "Response Code: " +
     88                         response.getStatusLine().getStatusCode());
     89 
     90                 if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
     91 
     92                     String data = EntityUtils.toString(response.getEntity());
     93 
     94                 }
     95             } catch (IOException e) {
     96                 Log.e(TAG, "~~~~~~"+e);
     97                 e.printStackTrace();
     98             }
     99             Message msg = new Message();
    100             Bundle data = new Bundle();
    101             data.putString("value", "请求结果");
    102             msg.setData(data);
    103             handler.sendMessage(msg);
    104         }
    105     }
    106 }

    需要注意的是http请求在安卓3.0后就不能放在MainTread中了

  • 相关阅读:
    这篇通俗实用的Vlookup函数教程,5分钟就可以包你一学就会
    nginx 常见正则匹配符号表示
    Nginx if 条件判断
    nginx 将请求全部指向到一个页面
    windows10下面部署nginx(解决文件名中文乱码问题)
    二.Nginx反向代理和静态资源服务配置
    Nginx的使用(一)代理静态文件
    使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
    如何让NGINX显示文件夹目录
    Nginx 如何设置反向代理 多服务器,配置区分开来,单独文件保存单个服务器 server 主机名配置,通过 include 实现
  • 原文地址:https://www.cnblogs.com/turtle920/p/4900486.html
Copyright © 2011-2022 走看看