wininetでPOSTで値を渡せません
winnetを使ってPOST形式でサーバにパラメータを渡そうとしていますが、パラメータが渡せずに困っています。
HttpOpenRequestかHttpSendRequestがおかしいと思うのですが、自分では見当がつきません。
よければ何処に問題があるのか教えてください。
環境:vc++2005
int DoHttpRequest( void )
{
HINTERNET hInet, hSession, hRequest;
DWORD dwTotal = 0;
wchar_t param[] = L"type=1";
wchar_t header[] = L"Content-Type: application/x-www-form-urlencoded";
wchar_t accept[] = L"Accept: */*"; // 使ってない
BOOL flag;
Console::WriteLine( "Http接続START" );
//インターネット(WinInet)初期化
hInet = InternetOpen( NULL,
INTERNET_OPEN_TYPE_PRECONFIG,
NULL, NULL, 0);
if (hInet == NULL) {
Console::WriteLine( "エラー1" );
return -1;
}
// サーバへ接続
hSession = InternetConnect( hInet, L"192.168.11.25", 9999,
NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0 );
if( hSession == NULL ) {
Console::WriteLine( "エラー2" );
InternetCloseHandle(hInet);
return -1;
}
//HTTPセッションの開始, 指定のURLオープン
hRequest = HttpOpenRequest( hSession, L"POST", L"/sample/service.php",
NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0 );
if (hRequest == NULL) {
Console::WriteLine( "エラー3" );
InternetCloseHandle(hSession);
InternetCloseHandle(hInet);
return -1;
}
// 送信
flag = HttpSendRequest( hRequest, header, wcslen( header ), param, wcslen( param ));
if( flag == FALSE ) {
Console::WriteLine( "エラー4" );
InternetCloseHandle(hRequest);
InternetCloseHandle(hSession);
InternetCloseHandle(hInet);
return -1;
}
//インターネットハンドルの解放
InternetCloseHandle( hRequest );
InternetCloseHandle( hSession );
InternetCloseHandle( hInet );
Console::WriteLine( "Http接続END" );
return 0;
}
お礼
Alyssa_Art さん、ご回答ありがとうございます。 ご指摘通り HRESULT の値を確認したところ直接的な原因では無いものの 糸口となるエラーが確認できました。 吐き出されているエラーは 「アクティブ化コンテキストがアクティブでない」 という内容で、情報を探したところ Visual C++ 2008 Express のランタイムライブラリの設定に問題があるのでは? という部分にたどり着きました。 プロジェクトのプロパティ → 構成プロパティ → C/C++ → コード生成 上記項目のランタイムライブラリを「マルチスレッド(/MT)」に変更 この状態で、Releaseコンパイルを行い作成した.exeを友人PCで実行したところ エラー無く起動し、サウンドの再生が行われました。 Express Edition 2005等では、ランタイムライブラリが「マルチスレッドデバッグDLL」や 「マルチスレッドDLL」となっていると配布先で上手く起動できないという問題があったようで 2008 でもこれに近いものがあるようです。 当初の「サウンドが鳴らない」に関しては解決しましたが、根本解決としていいかどうか、もう少し調べてみようと思います。 解決の糸口を提示して頂き、ありがとうございました(^-^)