《老罗Android》学习之HTTP (三) POST提交数据
2014-05-18 23:22
253 查看
1. POST提交数据
示例:客户端 post方式 提交用户和密码. 服务器端判断是否正确,做出处理.
1) 建立Java Project.
2) 工程目录下新建目录/libs,把工具包拷贝到该目录下,选中包右键--->Build path--->configure build path.
3) /src下新建一个包com.http.get,包下新建一个工具类文件 HttpUtil.java.
4) 开户 MyHTTP web项目的服务器。 就会输出 登录成功的字符串。
entrySet(): entry 可以将它理解为一个对象,有key和value俩个属性,可以通过getKey()获得key值,也可以通过getValue()获得value值;
2 使用apache工具类提交数据
示例二:客户端 post方式 提交用户和密码. 服务器端判断是否正确,做出处理.
1) 建立Java Project.
2) 工程目录下新建目录/libs,把工具包拷贝到该目录下,选中包右键--->Build path--->configure build path.
3) /src下新建一个包com.http.get,包下新建一个工具类文件 HttpUtil.java.
与上一个示例,封装方法不一样。
浅论Android网络请求库——android-async-http
快速Android开发系列网络篇之Android-Async-Http
示例:客户端 post方式 提交用户和密码. 服务器端判断是否正确,做出处理.
1) 建立Java Project.
2) 工程目录下新建目录/libs,把工具包拷贝到该目录下,选中包右键--->Build path--->configure build path.
3) /src下新建一个包com.http.get,包下新建一个工具类文件 HttpUtil.java.
public class HttpUtil { // 请求服务器端的url private static String PATH = "http://192.168.1.105:8080/MyHTTP/LonginServlet"; private static URL url; public HttpUtil() { } static { try { url = new URL(PATH); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param params * 填写的url的参数 * @param encode * 字节编码 * @return */ public static String sendPostMessage(Map<String, String> params, String encode) { // 作为StringBuffer初始化的字符串 StringBuffer buffer = new StringBuffer(); try { if (params != null && !params.isEmpty()) { for (Map.Entry<String, String> entry : params.entrySet()) { // 完成转码操作 buffer.append(entry.getKey()).append("=").append( URLEncoder.encode(entry.getValue(), encode)).append("&"); } buffer.deleteCharAt(buffer.length() - 1); // 删除掉最有一个& } System.out.println("-->>"+buffer.toString()); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setConnectTimeout(3000); urlConnection.setRequestMethod("POST"); urlConnection.setDoInput(true);// 表示从服务器获取数据 urlConnection.setDoOutput(true);// 表示向服务器写数据 // 获得上传信息的字节大小以及长度 byte[] mydata = buffer.toString().getBytes(); // 表示设置请求体的类型是文本类型 urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); urlConnection.setRequestProperty("Content-Length", String.valueOf(mydata.length)); // 获得输出流,向服务器输出数据 OutputStream outputStream = urlConnection.getOutputStream(); outputStream.write(mydata,0,mydata.length); //把本地数据写到流中 outputStream.close(); // 获得服务器响应的结果和状态码 int responseCode = urlConnection.getResponseCode(); if (responseCode == 200) { return changeInputStream(urlConnection.getInputStream(), encode); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; } /** * 将一个输入流转换成指定编码的字符串 * * @param inputStream * @param encode * @return */ private static String changeInputStream(InputStream inputStream, String encode) { // TODO Auto-generated method stub ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] data = new byte[1024]; int len = 0; String result = ""; if (inputStream != null) { try { while ((len = inputStream.read(data)) != -1) { outputStream.write(data, 0, len); } result = new String(outputStream.toByteArray(), encode); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Map<String, String> params = new HashMap<String, String>(); params.put("username", "admin"); params.put("password", "123"); String result = HttpUtil.sendPostMessage(params, "utf-8"); System.out.println("--result->>" + result); } }
4) 开户 MyHTTP web项目的服务器。 就会输出 登录成功的字符串。
entrySet(): entry 可以将它理解为一个对象,有key和value俩个属性,可以通过getKey()获得key值,也可以通过getValue()获得value值;
2 使用apache工具类提交数据
示例二:客户端 post方式 提交用户和密码. 服务器端判断是否正确,做出处理.
1) 建立Java Project.
2) 工程目录下新建目录/libs,把工具包拷贝到该目录下,选中包右键--->Build path--->configure build path.
3) /src下新建一个包com.http.get,包下新建一个工具类文件 HttpUtil.java.
public class HttpUtils { public HttpUtils() { } public static String sendHttpClientPost(String path, Map<String, String> map, String encode) { List<NameValuePair> list = new ArrayList<NameValuePair>(); if (map != null && !map.isEmpty()) { for (Map.Entry<String, String> entry : map.entrySet()) { list.add(new BasicNameValuePair(entry.getKey(), entry .getValue())); } } try { // 实现将请求的参数封装到表单中,请求体中 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, encode); // 使用Post方式提交数据 HttpPost httpPost = new HttpPost(path); httpPost.setEntity(entity); // 执行post请求 DefaultHttpClient client = new DefaultHttpClient(); HttpResponse httpResponse = client.execute(httpPost); if (httpResponse.getStatusLine().getStatusCode() == 200) { return changeInputStream(httpResponse.getEntity().getContent(), encode); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; } /** * 将一个输入流转换成指定编码的字符串 * * @param inputStream * @param encode * @return */ public static String changeInputStream(InputStream inputStream, String encode) { // TODO Auto-generated method stub ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] data = new byte[1024]; int len = 0; String result = ""; if (inputStream != null) { try { while ((len = inputStream.read(data)) != -1) { outputStream.write(data, 0, len); } result = new String(outputStream.toByteArray(), encode); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String path = "http://192.168.1.105:8080/MyHTTP/LonginServlet"; Map<String, String> params = new HashMap<String, String>(); params.put("username", "admin"); params.put("password", "123"); String result = HttpUtils.sendHttpClientPost(path, params, "utf-8"); System.out.println("-->>"+result); } }
与上一个示例,封装方法不一样。
浅论Android网络请求库——android-async-http
快速Android开发系列网络篇之Android-Async-Http
相关文章推荐
- 《老罗Android》学习之HTTP (二) POST和GET提交数据
- 《老罗Android》学习之HTTP (二) POST和GET提交数据
- Android学习之Http使用Post方式进行数据提交
- 20110215 学习记录2:表单中的get和post区别 & 使用 HttpWebRequest 向网站提交数据
- Android学习之Http使用Post方式进行数据提交(普通数据和Json数据)
- Android学习之Http使用Post方式进行数据提交
- Android学习之Http使用Post方式进行数据提交
- HttpClient 4 使用POST方式提交普通表单数据的例子
- 程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成
- wcf webHttpBinding Post 大数据量提交 ios c#客户端
- Android----用HTTP的get,post,HttpClient三种方式向web service提交文本数据
- C#中使用HttpWebRequest用Post提交MultiPart数据
- 在c#中使用HttpWebRequest时的几种提交数据方式学习和分析
- 用PHP模拟HTTP中的POST请求JSP网页,提交数据
- HttpWebRequest 向网站提交数据 (post与get方式)
- php获取通过http协议post提交过来xml数据及解析xml
- HttpNameValueCollection处理GET POST提交数据类
- php中用socket模拟http中post或者get提交数据
- python+httplib实现HTTP POST提交数据,使用Basic Authentication(基本验证)做登陆验证
- [Android开发]Android之使用HTTP的get,post,HttpClient三种方式向服务器端提交文本数据