使用httpUrlConnection提交get请求
首先建立本地的URL站点
jsp代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>疯子的测试页面</title> </head> <body> <% //Thread.sleep(1000); //java代码 System.out.println("测试输出"); //请求对象 String name = request.getParameter("name"); System.out.println("测试参数 name =" + name); //响应对象 out.append("收到的测试信息 name = " + name +"<br>"); %> <%=name%> </body> </html>
输出效果:
xml代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.hanqi.test6.WebActivity" android:orientation="vertical"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/et_5" android:hint="URL地址"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Get方式" android:onClick="bt5_OnClick"/> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Post方式" android:onClick="bt6_OnClick"/> </LinearLayout> <EditText android:layout_width="match_parent" android:layout_height="100dp" android:id="@+id/et_6"/> </LinearLayout>
Java代码:
package com.hanqi.test6; import android.app.ProgressDialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class WebActivity extends AppCompatActivity { EditText et_5; EditText et_6; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); et_5 = (EditText)findViewById(R.id.et_5); et_6 = (EditText)findViewById(R.id.et_6); } public void bt5_OnClick(View v) { /* * 使用httpUrlConnection提交get请求 */ /* 1. 显示ProgressDialog 2. 启动分线程 3. 在分线程, 发送请求, 得到响应数据 1). 得到path, 并带上参数name=Tom1&age=11 2). 创建URL对象 3). 打开连接, 得到HttpURLConnection对象 4). 设置请求方式,连接超时, 读取数据超时 5). 连接服务器 6). 发请求, 得到响应数据 得到响应码, 必须是200才读取 得到InputStream, 并读取成String 7). 断开连接 4. 在主线程, 显示得到的结果, 移除dialog */ //1. 显示ProgressDialog final ProgressDialog dialog = ProgressDialog.show(this, null, "正在请求中..."); //2. 启动分线程 new Thread(){ //3. 在分线程, 发送请求, 得到响应数据 public void run() { try { //1). 得到path, 并带上参数name=Tom1&age=11 String path = et_5.getText().toString()+"?name=Tom1&age=11"; //2). 创建URL对象 URL url = new URL(path); //3). 打开连接, 得到HttpURLConnection对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //4). 设置请求方式,连接超时, 读取数据超时 connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(6000); //5). 连接服务器 connection.connect(); //6). 发请求, 得到响应数据 //得到响应码, 必须是200才读取 int responseCode = connection.getResponseCode(); if(responseCode==200) { //得到InputStream, 并读取成String InputStream is = connection.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; while((len=is.read(buffer))!=-1) { baos.write(buffer, 0, len); } final String result = baos.toString(); baos.close(); is.close(); //4. 在主线程, 显示得到的结果, 移除dialog runOnUiThread(new Runnable() { @Override public void run() { et_6.setText(result); dialog.dismiss(); } }); } //7). 断开连接 connection.disconnect(); } catch (Exception e) { e.printStackTrace(); //如果出了异常要移除dialog dialog.dismiss(); } } }.start(); } }
输入本地网络地址显示效果图: