2010-10-01 66 views
2

最近我試圖在Windows Mobile中創建一個HTTP POST查詢,但POST查詢不成功。這是我一直在努力做 這裏sRequestHeaders是這是Unicode和MSDN文檔的標題說以下有關它用於POST「lpOptional」參數參數在Windows Mobile中設置HTTP POST參數

pOptional [中]

指向緩衝區的指針,該緩衝區包含在請求標頭後立即發送的任何可選數據。該參數通常用於POST和PUT操作。可選數據可以是發佈到服務器的資源或信息。如果沒有可選數據要發送,則此參數可以爲NULL。

dwOptionalLength [IN]

可選數據,以字節爲單位的大小。如果沒有可選數據要發送,此參數可以爲零。

它只是說,pOptional是一個包含可選數據的緩衝區,dwOptionalLength以字節爲單位指定緩衝區,但當嘗試向此調用發送Unicode緩衝區及其字節大小時,響應不是200(HTTP_OK)。經過多次嘗試,我發現參數必須在ANSI緩衝區中。所有其他參數處理LPCTSTR,即TCHAR緩衝區,這一個單獨需要是ANSI緩衝區。以下是一個

if(FALSE == HttpSendRequest(hRequest, (LPCTSTR)sRequestHeaders, sRequestHeaders.GetLength(), LPVOID)(LPSTR)pszAnsiRequestParams, dwRequestParamsLen)) 

在上述呼叫pszAnsiRequestParams代碼是ANSI緩衝器和dwRequestParamsLen是以字節爲單位該緩衝器的大小。一旦我改變了這個,反應是200.這是怎麼一直髮送參數?如果是這種情況,我將如何發送Unicode POST參數?因爲在我的情況下,我正在處理ASCII字符的時間,這工作正常,但不知何故,我覺得應該有一個出路。

有人可以發佈解決方案我還缺少什麼?

回答

0

我不確定編碼部分,但如果你只關心發送POST參數,這裏有另一種方法。我使用HttpWebRequest發送發佈參數。這是一個片段。

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(); 
相關問題