HTTP的请求详解在我的博客中已经讲解过:

http://blog.csdn.net/xiazdong/article/details/7215296

我在http://blog.csdn.net/xiazdong/article/details/7725867 中已经封装了一个HTTP请求的辅助类,因此可以很简单的发送GET、POST请求;

如HttpRequestUtil.sendGetRequest();是发送GET请求;

一、核心代码

HTTP GET 核心代码:

(1)String value = URLEncoder.encode(String value,"UTF-8");

(2)String path = "http://../path?key="+value;

(3)URL url = new URL(path);//此处的URL需要进行URL编码;

(4)HttpURLConnection con = (HttpURLConnection)url.openConnection();

(5)con.setRequestMethod("GET");

(6)con.setDoOutput(true);

(7)OutputStream out = con.getOutputStream();

(8)out.write(byte[]buf);

(9)int code = con.getResponseCode();

HTTP POST 核心代码:

(1)String value = URLEncoder.encode(String value,"UTF-8");

(2)byte[]buf = ("key="+value).getBytes("UTF-8");

(3)String path = "http://../path";

(4)URL url = new URL(path);//此处的URL需要进行URL编码;

(5)HttpURLConnection con = (HttpURLConnection)url.openConnection();

(6)con.setRequestMethod("POST");

(7)con.setDoOutput(true);

(8)OutputStream out = con.getOutputStream();

(9)out.write(byte[]buf);

(10)int code = con.getResponseCode();

二、GET和POST乱码解决方式

GET:

 

在doGet中加入:

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

POST:

 

在doPost中加入:

 

request.setCharacterEncoding("UTF-8");

详情请看我的博文:

http://blog.csdn.net/xiazdong/article/details/7217022

三、服务器端代码

[java] view plaincopy
  1. package org.xiazdong.servlet;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. @WebServlet("/PrintServlet")
  9. public class PrintServlet extends HttpServlet {
  10. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  11. String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
  12. String age = new String(request.getParameter("age").getBytes("ISO-8859-1"),"UTF-8");
  13. System.out.println("姓名:"+name+"\n年龄:"+age);
  14. }
  15. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  16. request.setCharacterEncoding("UTF-8");
  17. System.out.println("姓名:"+request.getParameter("name")+"\n年龄:"+request.getParameter("age"));
  18. }
  19. }

四、Android端代码

在AndroidManifest.xml加入:

[html] view plaincopy
  1. <uses-permission android:name="android.permission.INTERNET"/>

MainActivity.java

[java] view plaincopy
  1. package org.xiazdong.network.submit;
  2. import java.io.OutputStream;
  3. import java.net.HttpURLConnection;
  4. import java.net.URL;
  5. import java.net.URLEncoder;
  6. import android.app.Activity;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;
  11. import android.widget.EditText;
  12. import android.widget.Toast;
  13. public class MainActivity extends Activity {
  14. private EditText name, age;
  15. private Button getbutton, postbutton;
  16. private OnClickListener listener = new OnClickListener() {
  17. @Override
  18. public void onClick(View v) {
  19. try{
  20. if (getbutton == v) {
  21. /*
  22. * 因为是GET请求,所以需要将请求参数添加到URL后,并且还需要进行URL编码
  23. * URL = http://192.168.0.103:8080/Server/PrintServlet?name=%E6%88%91&age=20
  24. * 此处需要进行URL编码因为浏览器提交时自动进行URL编码
  25. * */
  26. StringBuilder buf = new StringBuilder("http://192.168.0.103:8080/Server/PrintServlet");
  27. buf.append("?");
  28. buf.append("name="+URLEncoder.encode(name.getText().toString(),"UTF-8")+"&");
  29. buf.append("age="+URLEncoder.encode(age.getText().toString(),"UTF-8"));
  30. URL url = new URL(buf.toString());
  31. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  32. conn.setRequestMethod("GET");
  33. if(conn.getResponseCode()==200){
  34. Toast.makeText(MainActivity.this, "GET提交成功", Toast.LENGTH_SHORT).show();
  35. }
  36. else Toast.makeText(MainActivity.this, "GET提交失败", Toast.LENGTH_SHORT).show();
  37. }
  38. if (postbutton == v) {
  39. /*
  40. * 如果是POST请求,则请求参数放在请求体中,
  41. * name=%E6%88%91&age=12
  42. *
  43. * */
  44. StringBuilder buf = new StringBuilder();
  45. buf.append("name="+URLEncoder.encode(name.getText().toString(),"UTF-8")+"&");
  46. buf.append("age="+URLEncoder.encode(age.getText().toString(),"UTF-8"));
  47. byte[]data = buf.toString().getBytes("UTF-8");
  48. URL url = new URL("http://192.168.0.103:8080/Server/PrintServlet");
  49. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  50. conn.setRequestMethod("POST");
  51. conn.setDoOutput(true); //如果要输出,则必须加上此句
  52. OutputStream out = conn.getOutputStream();
  53. out.write(data);
  54. if(conn.getResponseCode()==200){
  55. Toast.makeText(MainActivity.this, "GET提交成功", Toast.LENGTH_SHORT).show();
  56. }
  57. else Toast.makeText(MainActivity.this, "GET提交失败", Toast.LENGTH_SHORT).show();
  58. }
  59. }
  60. catch(Exception e){
  61. }
  62. }
  63. };
  64. @Override
  65. public void onCreate(Bundle savedInstanceState) {
  66. super.onCreate(savedInstanceState);
  67. setContentView(R.layout.main);
  68. name = (EditText) this.findViewById(R.id.name);
  69. age = (EditText) this.findViewById(R.id.age);
  70. getbutton = (Button) this.findViewById(R.id.getbutton);
  71. postbutton = (Button) this.findViewById(R.id.postbutton);
  72. getbutton.setOnClickListener(listener);
  73. postbutton.setOnClickListener(listener);
  74. }
  75. }

(HttpURLConnection)强制转化相关推荐

  1. 课程作业1:字符型强制转化为整型

    设计思想:题目要求是从命令行中接受多个数字,求和.而我们知道命令行中的输入的数据类型是字符型,所以必须转化为整型才能相加.所以我们的思路是:在输入字符串后,用for循环依次强制转化为整型,然后依次相加 ...

  2. c语言强制转化指针,C语言指针强制转化的应用

    指针类型强制转化在kernel设计中非常常见,这里记录两个非常有意思的用法: 1.对地址进行运算.任何虚拟地址都表示成void *va  = (void *) 100, *(va + 1) ==101 ...

  3. 字符串强制转化数字java_js 字符串转换成数字的三种方法

    方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有 ...

  4. php中如何强制转为长整型,PHP长整型在32位系统中强制转化溢出

    CleverCode近期遇到一个PHP项目整形转化问题,mysql有一个字段id是bigint的,里面有长整型,如id = 5147486396.可是php代码因为历史原因却部署在多台机器中,当中A机 ...

  5. php中如何强制转为长整型,关于php32位系统中长整型的强制转化溢出的详细介绍...

    CleverCode最近遇到一个PHP项目整形转化问题,mysql有一个字段id是bigint的,里面有长整型,如id = 5147486396.但是php代码由于历史原因却部署在多台机器中,其中A机 ...

  6. java父类可以强制转化成子类吗?

    转自:http://blog.csdn.net/ld422586546/article/details/9707997 Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换 ...

  7. 强制类型转化(数组名以及数组名取地址)

    代码: void main() {int a[4] = {1,2,3,4};int *ptr0 = &a[0] + 1;int *ptr1 = (int *)(&a + 1);int ...

  8. python强制类型转化

    python是一门强类型的语言,不同类型不能相加. 动态类型/静态类型: ​ 静态类型:类型是编译时确定的,后期无法修改 ​ 动态类型:类型是运行时进行判定的,可以动态修改(python) 强类型/弱 ...

  9. Go 学习笔记(32)— 类型系统(命名类型、未命名类型、底层类型、类型强制转换、类型别名和新声明类型)

    1. 命名类型和未命名类型 1.1 命名类型 类型可以通过标识符来表示,这种类型称为命名类型( Named Type ). Go 语言的基本类型中有 20 个预声明简单类型都是命名类型, Go 语言还 ...

最新文章

  1. css3的动画特效--动画序列(animation)
  2. 表中的数据导出为insert语句的简单方法
  3. mybatis配置文件不在resources目录下时需进行的额外配置方法
  4. .NET 6新特性试用 | 常量内插字符串
  5. 小程序,修改数组或对象中的值,通过input动态修改数组对象中的值
  6. Shell——变量详解及注意点
  7. 雷军卸任小米电子董事长!常程等人也退出该公司 网友:为造车放弃家业?
  8. 王道机试指南读后总结-6(动态规划等)
  9. nginx限制并发连接数和连接请求数
  10. 排序算法2:直接选择排序
  11. 音频处理与压缩技术漫谈
  12. win7升级win10时报0x80072F8F - 0x20000错误处理
  13. 802.1Q封装的VLAN数据帧格式
  14. 83.android 简单的获取手机SIM卡卡槽数量,当前SIM卡数量。
  15. linux基础——echo
  16. 《痛点:挖掘小数据满足用户需求》
  17. rstp 转hls_将RTSP流转为浏览器播放
  18. 如何调出天正8.2中上部的工具条
  19. 数据结构与算法-查找算法(二分查找,插值查找,斐波那契(黄金分割法)查找)
  20. 一些常用的资料、文档、博客学习网站

热门文章

  1. go检测出json中的duplicate object key_精读《如何比较 Object 对象》
  2. 15.4:泛型化方法
  3. 五大常用算法之四:回溯法
  4. Jmeter与ant整合生成美观的测试报告
  5. 使用window.performance分析web前端性能
  6. April Fools Contest 2017 题解
  7. django-admin.py创建项目失败解决方法
  8. 伸展树 Splay 模板
  9. 《Orange’s 一个操作系统的实现》3.保护模式3----DOS加载.EXE过程
  10. vs2010 学习Silverlight学习笔记(15):数据与通信之JSON