• 12、网络编程


    HttpGet和HttpPost的使用步骤 

    1. 创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。

    2. 使用DefaultHttpClient.execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。

    3. 通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。

    如果使用HttpPost方法提交HTTP POST请求,还需要使用HttpPost类的 setEntity方法设置请求参数。 

     1     @Override
     2     public void onClick(View view) {
     3         // 读者需要将本例中的IP换成自己机器的IP
     4         String url = "http://192.168.17.105:8080/querybooks/QueryServlet";
     5         TextView tvQueryResult = (TextView) findViewById(R.id.tvQueryResult);
     6 
     7         HttpResponse httpResponse = null;
     8         try {
     9             switch (view.getId()) {
    10             // 提交HTTP GET请求
    11             case R.id.btnGetQuery:
    12                 // 向url添加请求参数
    13                 url += "?bookname=" + etBookName.getText().toString();
    14                 // 第1步:创建HttpGet对象
    15                 HttpGet httpGet = new HttpGet(url);
    16                 // 第2步:使用execute方法发送HTTP GET请求,并返回HttpResponse对象
    17                 httpResponse = new DefaultHttpClient().execute(httpGet);
    18                 // 判断请求响应状态码,状态码为200表示服务端成功响应了客户端的请求
    19                 if (httpResponse.getStatusLine().getStatusCode() == 200) {
    20                     // 第3步:使用getEntity方法获得返回结果
    21                     String result = EntityUtils.toString(httpResponse
    22                             .getEntity());
    23                     // 去掉返回结果中的“
    ”字符,否则会在结果字符串后面显示一个小方格
    24                     tvQueryResult.setText(result.replaceAll("
    ", ""));
    25                 }
    26                 break;
    27             // 提交HTTP POST请求
    28             case R.id.btnPostQuery:
    29                 // 第1步:创建HttpPost对象
    30                 HttpPost httpPost = new HttpPost(url);
    31                 // 设置HTTP POST请求参数必须用NameValuePair对象
    32                 List<NameValuePair> params = new ArrayList<NameValuePair>();
    33                 params.add(new BasicNameValuePair("bookname", etBookName
    34                         .getText().toString()));
    35                 // 设置HTTP POST请求参数
    36                 httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
    37                 // 第2步:使用execute方法发送HTTP POST请求,并返回HttpResponse对象
    38                 httpResponse = new DefaultHttpClient().execute(httpPost);
    39                 if (httpResponse.getStatusLine().getStatusCode() == 200) {
    40                     // 第3步:使用getEntity方法获得返回结果
    41                     String result = EntityUtils.toString(httpResponse
    42                             .getEntity());
    43                     // 去掉返回结果中的“
    ”字符,否则会在结果字符串后面显示一个小方格
    44                     tvQueryResult.setText(result.replaceAll("
    ", ""));
    45                 }
    46                 break;
    47             }
    48         } catch (Exception e) {
    49             tvQueryResult.setText(e.getMessage());
    50         }
    51     }
    1 <uses-permission android:name="android.permission.INTERNET" />

    HttpURLConnection的使用步骤 

    1. 用Url.openConnection方法获取HttpURLConnection对象。
    2. 设置请求方法,如httpURLConnection.setRequestMethod("POST");

    3. 设置输入输出及其它权限。
    4. 设置HTTP请求头。
    5. 输入和输出数据。
    6. 关闭输入输出流。 

    Socket发送数据 

    Socket socket = new Socket("192.168.17.105", 80);

    OutputStream os = socket.getOutputStream();

    OutputStreamWriter osw = new OutputStreamWriter(os);

    BufferedWriter bw = new BufferedWriter(osw);

    bw.write("hello world");

    bw.flush();

    bw.close(); 

    Socket接收数据 

    Socket socket = new Socket("192.168.17.105", 80);

    InputStream is = socket.getInputStream();

    InputStreamReader isr = new InputStreamReader(is);

    BufferedReader br = new BufferedReader(isr);
    String s = "";
    while((s = br.readLine()) != null)

           System.out.println(s);

    br.close(); 

    ServerSocket监听客户端请求 

    ServerSocket serverSocket = new ServerSocket(1234); // 绑定端口 
    while(true)  // 处理其他任务的代码
    {

            Socket socket = serverSocket.accept(); // 等待接收客户端请求

            // 处理其他任务的代码
            new ThreadClass(socket).start();

  • 相关阅读:
    yarn的安装和使用
    git clone不了项目文件的解决方法和----vscode操作git的方法
    vue使用swiper遇到的坑
    stylus介绍与引入
    Win10在当前目录快速打开cmd的方法
    git切换到指定分支,git新建分支与合并
    jQuery之表格隔行变色
    jQuery之onload与ready
    jQuery之多库共存
    jQuery之插件
  • 原文地址:https://www.cnblogs.com/androidsj/p/3929373.html
Copyright © 2020-2023  润新知