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

我们知道Android中通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的长度也有限制,与Get方式类似,http-post参数也是被URL编码的,然而它的变量名和变量值不作为URL的一部分被传送,而是放在实际的HTTP请求消息内部被传送。

可以通过如下的代码设置POST提交方式参数:

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类,

【代码如下】:

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); // 向服务器写数据 

                // 获取上传信息的大小和长度 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/03bcfb6192046f895d539878d1b39975.html