zoukankan      html  css  js  c++  java
  • 使用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();
        }
     }

    输入本地网络地址显示效果图:

  • 相关阅读:
    C#设计模式总结
    【23】备忘录模式(Memento Pattern)
    【22】访问者模式(Visitor Pattern)
    mycat 分库
    mysql的存储过程
    mysql的视图
    mysql的索引
    mysql权限操作
    mysql事务操作
    mysql常用函数
  • 原文地址:https://www.cnblogs.com/fangchongyan/p/5409958.html
Copyright © 2011-2022 走看看