HttpClient使用post方法提交数据后服务端如何获得这些参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpClient使用post方法提交数据后服务端如何获得这些参数相关的知识,希望对你有一定的参考价值。
参考技术A ASP段还是照常,用request.form("xx")的方式接收,关键是用Ajax方式提交数据的时候,对传递的值进行编码,和设置文件头,下面是一个ajax用Post方式提交数据的函数,你参考下:function Post()
var name=document.form1.name.value;
var sex=document.form1.sex.value;
var Ajax=createXMLHttps();//---这是创建XMLHttps对象的函数,就不写了
var url="Ajax_Post.asp";//--接收数据的页面
var sendData="v_name="+escape(name);//包含中文的值,需要escape进行编码
sendData+="&sex="+escape(sex);
Ajax.onreadystatechange=function()
if (4==Ajax.readyState)
//在这里进行你需要的一些操作
Ajax.open("POST",url,true);
//如果是POST方式提交数据,下两行必不可少
Ajax.setrequestheader("content-length",sendData.length);
Ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Ajax.send(sendData);//要POST的数据
---------------------
接收数据时,直接使用request.form("name")即可获得name的值,为防止出错,也可对获取到的值再进行反编码
name=unescape(request.form("name"))'---用unescape函数本回答被提问者和网友采纳
新手求助,Arduino联网后,如何回应HttpClient的GET请求
参考技术A Android联网可以采用HttpPost,HttpGet封装post请求和get请求,再使用HttpClient的excute方法发送post或者get请求并返回服务器的响应数据。1、设置连接和读取超时时间,并新建HttpClient对象:
// 设置连接超时时间和数据读取超时时间
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,
30000);
HttpConnectionParams.setSoTimeout(httpParams,
30000);
//新建HttpClient对象
HttpClient httpClient = new DefaultHttpClient(httpParams);
2、Get请求:
HttpPost post = new HttpPost(KeySource.HOST_URL_STR);
// set HTTP head parameters
Map<String, String> headers = heads;
Set<String> setHead = headers.keySet();
Iterator<String> iteratorHead = setHead.iterator();
while (iteratorHead.hasNext())
String headName = iteratorHead.next();
String headValue = (String) headers.get(headName);
post.setHeader(headName, headValue);
/**
* 通常的HTTP实体需要在执行上下文的时候动态生成的。
* HttpClient的提供使用EntityTemplate实体类和 ContentProducer接口支持动态实体。
* 内容制作是通过写需求的内容到一个输出流,每次请求的时候都会产生。
* 因此,通过EntityTemplate 创建实体通常是独立的,重复性好。
*/
ontentProducer cp = new ContentProducer()
public void writeTo(OutputStream outstream)
throws IOException
Writer writer = new OutputStreamWriter(outstream,
"UTF-8");
writer.write(requestBody);
writer.flush();
writer.close();
;
HttpEntity entity = new EntityTemplate(cp);
post.setEntity(entity);
//执行connect ,需要try ,catch处理
response = httpClient.execute(post);
3、Post请求:
HttpPost post = new HttpPost(KeySource.HOST_URL_STR);
// set HTTP head parameters
Map<String, String> headers = heads;
Set<String> setHead = headers.keySet();
Iterator<String> iteratorHead = setHead.iterator();
while (iteratorHead.hasNext())
String headName = iteratorHead.next();
String headValue = (String) headers.get(headName);
post.setHeader(headName, headValue);
/**
* 通常的HTTP实体需要在执行上下文的时候动态生成的。
* HttpClient的提供使用EntityTemplate实体类和ContentProducer接口支持动态实体。
* 内容制作是通过写需求的内容到一个输出流,每次请求的时候都会产生。
* 因此,通过EntityTemplate创建实体通常是独立的,重复性好。
*/
ContentProducer cp = new ContentProducer()
public void writeTo(OutputStream outstream)
throws IOException
Writer writer = new OutputStreamWriter(outstream,
"UTF-8");
writer.write(requestBody);
writer.flush();
writer.close();
;
HttpEntity entity = new EntityTemplate(cp);
post.setEntity(entity);
//connect ,need try catch
response = httpClient.execute(post);
4、请求Response响应处理:
if (response.getStatusLine().getStatusCode() == 200)
// get response xml.
/**
* 因为直接调用toString可能会导致某些中文字符出现乱码的情况。所以此处使用toByteArray
* 如果需要转成String对象,可以先调用EntityUtils.toByteArray()方法将消息实体转成byte数组,
* 在由new String(byte[] bArray)转换成字符串。
*/
byte[] bResultXml = EntityUtils.toByteArray(response
.getEntity());
if (bResultXml != null)
String strXml = new String(bResultXml, "utf-8");
//Todo xmlAnalysis..本回答被提问者和网友采纳 参考技术B 需要帮你做设计吗
以上是关于HttpClient使用post方法提交数据后服务端如何获得这些参数的主要内容,如果未能解决你的问题,请参考以下文章
java模拟登陆时,post提交,对方网页提交时是鼠标onclick触发数据交流的,我该怎么弄?