当前位置:首页 > > 充电吧
[导读]和网络打交道总是难免的,所以很有必要学一下怎么操作和网络交互。我们通过URL类或者HttpClient类,都可以对网络访问,至于这两个类的区别,HttpClient类底层还是使用了Url类,对其封装了

和网络打交道总是难免的,所以很有必要学一下怎么操作和网络交互。

我们通过URL类或者HttpClient类,都可以对网络访问,至于这两个类的区别,HttpClient类底层还是使用了Url类,对其封装了一下。

第一步:建立一个服务器端,其中get方法返回"you had receied the message from http://192.168.1.132:8088/WebServer/student.do”;post方法返回输入的name。


package org.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StudentAction extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public StudentAction() {
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      PrintWriter out = response.getWriter();
        out.write("you had receied the message from http://192.168.1.132:8088/WebServer/student.do");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("name");
        PrintWriter out = response.getWriter();
        out.write(name);
    }

}





第二步:新建android projiect,新建一个java类,这里首先使用URL类,代码如下:


其中添加一个get方法:


package org.example.httpclient;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MHttpClient {

    public void get() throws Exception {
        // 实例化一个URL对象
        URL url = new URL("http://192.168.1.132:8088/WebServer/student.do");
        // 打开连接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 设置访问超时时间
        conn.setConnectTimeout(5 * 1000);
        // 设置请求参数
        conn.setRequestMethod("GET");
        // 得到输入流
        InputStream in = conn.getInputStream();
        // 从输入流中读取内容放到内存中
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = in.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
        System.out.println(new String(out.toByteArray()));
        out.close();
        in.close();
    }
}




我们使用单元测试,在manifest.xml里添加





别忘了加入internet访问权限,否则就会报java.net.UnknownHostException的错误。


接下来新建一个MHttpclientTestCase类,需要继承AndroidTestCase类

添加一个测试方法:


 public void testGet() throws Exception {
        MHttpClient url = new MHttpClient();
        url.get();
    }


然后在该文件右键->run as->android JUnit Test


可以在logcat中看到返回的信息“you had receied the message from http://192.168.1.132:8088/WebServer/student.do”。

如果要在请求中带参数的话,直接把参数附加到请求路径的后面就可以了,比如:http://www.baidu.com/s?wd=1&rsv_bp=0&rsv_spt=3&inputT=576


接下来,我们使用post请求。再MHttpClient类中建一个方法:


 public void post() throws Exception {
        String postData = "name=11";
        // 实例化一个URL对象
        URL url = new URL("http://192.168.1.132:8088/WebServer/student.do");
        // 打开连接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 设置访问超时时间
        conn.setReadTimeout(5 * 1000);
        // 设置请求方式
        conn.setRequestMethod("POST");
        // 发送POST请求必须设置允许输出
        conn.setDoOutput(true);
        conn.setRequestProperty("Charset", "utf-8");
        conn.setRequestProperty("Content-Length", postData.length() + "");
        OutputStream out = conn.getOutputStream();
        out.write(postData.getBytes());
        out.flush();
        if (conn.getResponseCode() == 200) {
            InputStream in = conn.getInputStream();
            // 从输入流中读取内容放到内存中
            ByteArrayOutputStream out2 = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = in.read(buffer)) != -1) {
                out2.write(buffer, 0, len);
            }
            System.out.println(new String(out2.toByteArray()));
            out2.close();
            in.close();
        }
        out.close();
    }


在单元测试类MHttpclientTestCase再添加一个方法:



 public void testPost() throws Exception {
        MHttpClient url = new MHttpClient();
        url.post();
    }

在方法名称右键->run as->android JUnit Test


可在logcat里看到返回结果 “11”


贴上全部代码:

MHttpClient.java


package org.example.httpclient;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MHttpClient {

    public void get() throws Exception {
        // 实例化一个URL对象
        URL url = new URL("http://192.168.1.132:8088/WebServer/student.do");
        // 打开连接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 设置访问超时时间
        conn.setConnectTimeout(5 * 1000);
        // 设置请求方式
        conn.setRequestMethod("GET");
        // 得到输入流
        InputStream in = conn.getInputStream();
        // 从输入流中读取内容放到内存中
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = in.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
        System.out.println(new String(out.toByteArray()));
        out.close();
        in.close();
    }

    public void post() throws Exception {
        String postData = "name=11";
        byte[] data = postData.getBytes();
        // 实例化一个URL对象
        URL url = new URL("http://192.168.1.132:8088/WebServer/student.do");
        // 打开连接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 设置访问超时时间
        conn.setConnectTimeout(10 * 1000);
        // 设置请求方式
        conn.setRequestMethod("POST");
        // 发送POST请求必须设置允许输出
        conn.setDoOutput(true);
        conn.setRequestProperty("Charset", "UTF-8");
        conn.setRequestProperty("Content-Length", data.length + "");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
        OutputStream out = conn.getOutputStream();
        out.write(data);
        out.flush();
        if (conn.getResponseCode() == 200) {
            InputStream in = conn.getInputStream();
            // 从输入流中读取内容放到内存中
            ByteArrayOutputStream out2 = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = in.read(buffer)) != -1) {
                out2.write(buffer, 0, len);
            }
            System.out.println(new String(out2.toByteArray()));
            out2.close();
            in.close();
        }
        out.close();
    }
}


MHttpclientTestCase.java



package org.example.httpclient;

import android.test.AndroidTestCase;

public class MHttpclientTestCase extends AndroidTestCase {

    public void testGet() throws Exception {
        MHttpClient url = new MHttpClient();
        url.get();
    }

    public void testPost() throws Exception {
        MHttpClient url = new MHttpClient();
        url.post();
    }

}


AndroidManifest.xml








本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭