当前位置:操作系统 > 安卓/Android >>

Android学习之Http使用Post方式进行数据提交

我们知道通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的长度也有限制,与Get方式类似,http-post参数也是被URL编码的,然而它的变量名和变量值不作为URL的一部分被传送,而是放在实际的HTTP请求消息内部被传送。
可以通过如下的代码设置POST提交方式参数:
[html]  
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();  
urlConnection.setConnectTimeout(3000);  
urlConnection.setRequestMethod("POST"); //以post请求方式提交  
urlConnection.setDoInput(true);     //读取数据  
urlConnection.setDoOutput(true);    //向服务器写数据  
//获取上传信息的大小和长度  
byte[] myData = stringBuilder.toString().getBytes();  
//设置请求体的类型是文本类型,表示当前提交的是文本数据  
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
urlConnection.setRequestProperty("Content-Length", String.valueOf(myData.length));  
 
这里使用一个案例来看一下如何使用post方式提交数据到服务器:
首先我们创建一个java project,只要创建一个类就行,我们创建一个HttpUtils.java类,
【代码如下】:
[html]  
package com.wujay.utils;  
  
import java.io.ByteArrayOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.io.UnsupportedEncodingException;  
import java.net.HttpURLConnection;  
import java.net.MalformedURLException;  
import java.net.URL;  
import java.net.URLEncoder;  
import java.util.HashMap;  
import java.util.Map;  
  
public class HttpUtils {  
    private static String PATH = "http://bdfngdg:8080/myhttp/servlet/LoginAction"; // 服务端地址  
    private static URL url;  
  
    public HttpUtils() {  
        super();  
    }  
  
    // 静态代码块实例化url  
    static {  
        try {  
            url = new URL(PATH);  
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
        }  
    }  
  
    /**  
     * 发送消息体到服务端  
     *   
     * @param params  
     * @param encode  
     * @return  
     */  
    public static String sendPostMessage(Map<String, String> params,  
            String encode) {  
        StringBuilder stringBuilder = new StringBuilder();  
        if (params != null && !params.isEmpty()) {  
            for (Map.Entry<String, String> entry : params.entrySet()) {  
                try {  
                    stringBuilder  
                            .append(entry.getKey())  
                            .append("=")  
                            .append(URLEncoder.encode(entry.getValue(), encode))  
                            .append("&");  
                } catch (UnsupportedEncodingException e) {  
                    e.printStackTrace();  
                }  
            }  
            stringBuilder.deleteCharAt(stringBuilder.length() - 1);  
            try {  
                HttpURLConnection urlConnection = (HttpURLConnection) url  
                        .openConnection();  
                urlConnection.setConnectTimeout(3000);  
                urlConnection.setRequestMethod("POST"); // 以post请求方式提交  
                urlConnection.setDoInput(true); // 读取数据  
                urlConnection.setDoOutput(true); // 向服务器写数据  
                // 获取上传信息的大小和长度  
                byte[] myData = stringBuilder.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);  
      &n
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,