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方法提交数据后服务端如何获得这些参数的主要内容,如果未能解决你的问题,请参考以下文章

HttpClient POST/SET方法

使用异步httpclient框架做get,post提交数据

java模拟登陆时,post提交,对方网页提交时是鼠标onclick触发数据交流的,我该怎么弄?

如何通过HttpClient去POST一个multipart/form-data数据

HttpClient Post 提交表单数据

HttpClient post提交数据,汉字转码