Windows mobile 在Windows Mobile中设置HTTP POST参数
最近,我试图在Windows Mobile中进行HTTP POST查询,但POST查询未成功。这就是我一直试图做的 这里的SRequesHeaders是Unicode格式的标题,MSDN文档说明了以下关于用于POST参数的“lpOptional”参数 流行的[流行的] 指向缓冲区的指针,该缓冲区包含在请求头之后立即发送的任何可选数据。此参数通常用于POST和PUT操作。可选数据可以是发布到服务器的资源或信息。如果没有要发送的可选数据,则此参数可以为NULL dwOptionalLength[英寸] 可选数据的大小,以字节为单位。如果没有要发送的可选数据,则此参数可以为零 它只是说,pOptional是一个包含可选数据的缓冲区,dwOptionalLength以字节为单位指定缓冲区,但当尝试向该调用发送Unicode缓冲区及其大小(以字节为单位)时,响应不是200(HTTP_OK)。经过几次尝试,我发现参数必须在ANSI缓冲区中。所有其他参数都处理LPCTSTR,即TCHAR缓冲区,仅此参数就需要是ANSI缓冲区。这是代码Windows mobile 在Windows Mobile中设置HTTP POST参数,windows-mobile,Windows Mobile,最近,我试图在Windows Mobile中进行HTTP POST查询,但POST查询未成功。这就是我一直试图做的 这里的SRequesHeaders是Unicode格式的标题,MSDN文档说明了以下关于用于POST参数的“lpOptional”参数 流行的[流行的] 指向缓冲区的指针,该缓冲区包含在请求头之后立即发送的任何可选数据。此参数通常用于POST和PUT操作。可选数据可以是发布到服务器的资源或信息。如果没有要发送的可选数据,则此参数可以为NULL dwOptionalLength[英寸
if( FALSE == HttpSendRequest(hRequest, (LPCTSTR)sRequestHeaders, sRequestHeaders.GetLength(), LPVOID)(LPSTR)pszAnsiRequestParams, dwRequestParamsLen ) )
在上面的调用中,pszAnsiRequestParams是ANSI缓冲区,dwRequestParamsLen是该缓冲区的大小(以字节为单位)。一旦我改变了这个,回复是200。这就是发送参数的方式吗?如果是这种情况,我将如何发送Unicode POST参数?因为在我的例子中,我当时正在处理ASCII字符,这很好,但不知何故,我觉得应该有一条出路
有人能发布一个解决方案吗?我还缺少什么?我不确定编码部分,但如果您只关心发送post参数,那么这里有另一种方法。我使用HttpWebRequest发送post参数。这里有一个片段
HttpWebRequest webRequest;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
// Prepare a requestParameterString
private String PrepareRequestString(String requestParameterString, String requestParamName, String data)
{
if (!requestParameterString.Equals(String.Empty))
{
requestParameterString += "&";
}
return requestParameterString += requestParamName + "=" + data;
}
// Set the request param data.
Stream requestStream = null;
webRequest.ContentLength = data.Length;
byte[] buffer = Encoding.UTF8.GetBytes(data);
requestStream = webRequest.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
// Finally, make the call.
WebResponse response = webRequest.GetResponse();
我不确定编码部分,但是如果您只关心发送POST参数,那么这里有另一种方法。我使用HttpWebRequest发送post参数。这里有一个片段
HttpWebRequest webRequest;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
// Prepare a requestParameterString
private String PrepareRequestString(String requestParameterString, String requestParamName, String data)
{
if (!requestParameterString.Equals(String.Empty))
{
requestParameterString += "&";
}
return requestParameterString += requestParamName + "=" + data;
}
// Set the request param data.
Stream requestStream = null;
webRequest.ContentLength = data.Length;
byte[] buffer = Encoding.UTF8.GetBytes(data);
requestStream = webRequest.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
// Finally, make the call.
WebResponse response = webRequest.GetResponse();