HttpUrlConnection Post请求

  1 package com.example.administrator.myapplication.activity;
  2 
  3 import android.os.Bundle;
  4 import android.os.Handler;
  5 import android.os.Message;
  6 import android.support.v7.app.AppCompatActivity;
  7 import android.view.View;
  8 import android.webkit.WebView;
  9 import android.widget.Button;
 10 import android.widget.Toast;
 11 
 12 import com.example.administrator.myapplication.R;
 13 
 14 import java.io.IOException;
 15 import java.io.InputStream;
 16 import java.io.OutputStream;
 17 import java.net.HttpURLConnection;
 18 import java.net.MalformedURLException;
 19 import java.net.URL;
 20 import java.nio.charset.Charset;
 21 
 22 public class HttpUrlConnectionPostActivity extends AppCompatActivity {
 23     WebView webView;
 24     Button postBtn;
 25     @Override
 26     protected void onCreate(Bundle savedInstanceState) {
 27         super.onCreate(savedInstanceState);
 28         setContentView(R.layout.activity_http_url_connection_post);
 29         webView = (WebView) findViewById(R.id.webView);
 30         postBtn = (Button) findViewById(R.id.post);
 31         postBtn.setOnClickListener(new View.OnClickListener() {
 32             @Override
 33             public void onClick(View v) {
 34                 new Thread(new Runnable() {
 35                     @Override
 36                     public void run() {
 37                         HttpUrlConnectionPost();
 38                     }
 39                 }).start();
 40             }
 41         });
 42 
 43     }
 44 
 45     private void HttpUrlConnectionPost(){
 46         try {
 47             URL url = new URL("https://www.baidu.com/");
 48             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
 49             connection.setConnectTimeout(5*1000);
 50             connection.setReadTimeout(5*1000);
 51             //设置是否向httpURLConnection写入内容
 52             //post请求必须设置为true,因为post请求参数是否写在http正文中
 53             connection.setDoOutput(true);
 54             //设置是否从HttpURLConnection读入内容,默认为true
 55             connection.setDoInput(true);
 56             //设置是否使用缓存,post请求不使用缓存
 57             connection.setUseCaches(false);
 58             //设置请求方法  注意大小写!
 59             connection.setRequestMethod("POST");
 60             //设置长连接
 61             //connection.setRequestProperty("Connection","keep-Alive");
 62             //设置字符集
 63             connection.setRequestProperty("Charset","utf-8");
 64             //connection.setRequestProperty("Content-type","application/x-www-");
 65 
 66             //!!!重点部分,设置参数
 67             String params = "page = 1 & num = 10";
 68             OutputStream os = connection.getOutputStream();
 69             os.write(params.getBytes());
 70             os.flush();
 71             os.close();
 72             if (connection.getResponseCode() == HttpURLConnection.HTTP_OK){
 73                 InputStream is = connection.getInputStream();
 74                 StringBuilder sb = new StringBuilder();
 75                 byte[] bytes = new byte[1024];
 76                 int i = 0;
 77                 while ((i = is.read(bytes)) != -1){
 78                     sb.append(new String(bytes,0,i,"utf-8"));
 79                 }
 80                 is.close();
 81 
 82                 Message message = handler.obtainMessage(1,sb.toString());
 83                 handler.sendMessage(message);
 84             }
 85         } catch (MalformedURLException e) {
 86             e.printStackTrace();
 87         } catch (IOException e) {
 88             e.printStackTrace();
 89         }
 90     }
 91     Handler handler = new Handler(){
 92         @Override
 93         public void handleMessage(Message msg) {
 94             super.handleMessage(msg);
 95             if (msg != null && msg.what == 1){
 96                 String s = (String) msg.obj;
 97                 String data = new String(s.getBytes(), Charset.forName("utf-8"));
 98                 webView.getSettings().setDefaultTextEncodingName("utf-8");
 99                 webView.getSettings().setJavaScriptEnabled(true);
100                 webView.loadDataWithBaseURL(null,data,"text/html","utf-8",null);
101                 Toast.makeText(getApplication(),"post请求成功!",Toast.LENGTH_SHORT).show();
102             }
103         }
104     };
105 }
 1  <WebView
 2         android:id="@+id/webView"
 3         android:layout_width="match_parent"
 4         android:layout_height="400dp"></WebView>
 5 
 6     <Button
 7         android:id="@+id/post"
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         android:text="HttpUrlConnection Post请求" />
原文地址:https://www.cnblogs.com/xiaolei121/p/5889762.html