不需要封装对象参数, 直接和 get方式一样 拼接 param=1&pame=244 就可以传递给后台。后台使用servlet测试,显示 的确是 doPost在处理,而且2个参数都能收
也没有乱码出现
只需要给这个函数传递一个 URL ,然后在里面定义参数
public static String urljsonPOST(String fromurl)
{
//网络地址 通过字符串,生成URL对象
URL url=null;
// 网络会话链接
HttpURLConnection conn=null;
//获取网站返回的输入流
InputStream in=null;
//每次读的字节数
byte[] data =new byte[1024];
//每次读到的字节数,一般是1024,如果到了最后一行就会少于1024,到了末尾就是 -1
int len=0;
//本地的输出流
ByteArrayOutputStream os;
try
{
Log.v("zms","使用httpurlconnection");
url=new URL(fromurl);
conn=(HttpURLConnection)url.openConnection();
//默认是get 方式
conn.setRequestMethod("POST");
// 设置是否向connection输出,如果是post请求,参数要放在http正文内,因此需要设为true
conn.setDoOutput(true);
// Post 请求不能使用缓存
conn.setUseCaches(false);
//设置请求头 一般没特殊要求, 不需要
//conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
// 要注意的是connection.getOutputStream会隐含的进行connect,所以下面这句可以不要
//conn.connect();
//要上传的参数
PrintWriter pw=new PrintWriter(conn.getOutputStream());
String content = "param1=" + URLEncoder.encode("日本7.7", "UTF_8")+"¶m2="+ URLEncoder.encode("中国8.15", "UTF_8");
pw.print(content);
pw.flush();
pw.close();
//时候需要获取输入, 废话,当然需要返回,最少要返回状态吧。 所以默认是true
//conn.setDoInput(true);
in=conn.getInputStream();
os=new ByteArrayOutputStream();
while ((len=in.read(data))!=-1)
{
os.write(data,0,len);
}
in.close();
return new String(os.toByteArray());
} catch (Exception e)
{
e.printStackTrace();
}
return null;
}
服务端的情况:
---------------------------------------------------------------------get方法
服务端 要注意 编码
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("utf-8");
System.out.println("hello word get");
String param1="";
String param2="";
if ((request.getParameter("param1")!=null) & (request.getParameter("param2")!=null) )
{
param1=new String(request.getParameter("param1").getBytes("iso-8859-1"),"GBK");
-----------------------------------------get android
public static String urljsonGET(String fromurl)
{
//网络地址 通过字符串,生成URL对象
URL url=null;
// 网络会话链接
HttpURLConnection conn=null;
//获取网站返回的输入流
InputStream in=null;
//每次读的字节数
byte[] data =new byte[1024];
//每次读到的字节数,一般是1024,如果到了最后一行就会少于1024,到了末尾就是 -1
int len=0;
//本地的输出流
ByteArrayOutputStream os;
try
{
Log.v("zms","使用httpurlconnectionget");
//服务器端
/* response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("utf-8");
param1=new String(request.getParameter("param1").getBytes("iso-8859-1"),"GBK");
*/
String content = "param1="+URLEncoder.encode("日本7.7", "GBK")+"¶m2="+URLEncoder.encode("中华民国1945.8.15", "GBK");
url=new URL(fromurl+"?"+content);
conn=(HttpURLConnection)url.openConnection();
//conn.setDoInput(true);
in=conn.getInputStream();
os=new ByteArrayOutputStream();
while ((len=in.read(data))!=-1)
{
os.write(data,0,len);
}
in.close();
return new String(os.toByteArray());
} catch (Exception e)
{
e.printStackTrace();
}
return null;
}