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

  • 相关阅读:
    姐姐的vue(1)
    LeetCode 64. Minimum Path Sum 20170515
    LeetCode 56. 56. Merge Intervals 20170508
    LeetCode 26. Remove Duplicates from Sorted Array
    LeetCode 24. Swap Nodes in Pairs 20170424
    LeetCode 19. Remove Nth Node From End of List 20170417
    LeetCode No.9 Palindrome Number 20170410
    LeetCode No.8. String to Integer (atoi) 2017/4/10(补上一周)
    LeetCode No.7 Reverse Integer 2017/3/27
    LeetCode No.4 Median of Two Sorted Arrays 20170319
  • 原文地址:https://www.cnblogs.com/androidsj/p/3929373.html
Copyright © 2011-2022 走看看