Недавно я пытался сделать запрос HTTP POST в Windows Mobile, но запрос POST не был успешным. Это то, что я пытался сделать
Здесь sRequestHeaders - это заголовки в Unicode, а в документации MSDN сказано следующее о параметре «lpOptional», который используется для параметров POST
pOptional [in]
Указатель на буфер, содержащий любые дополнительные данные, которые будут отправлены сразу после заголовков запроса. Этот параметр обычно используется для операций 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. Это, как каждый будет отправлять параметры всегда? Если это так, как я буду отправлять параметры POST Unicode? Поскольку в моем случае я имел дело с символами ASCII, это работает нормально, но я чувствую, что должен быть выход.
Может кто-нибудь выложить решение, что еще мне здесь не хватает?