前回書いたように、C/C++でWebサービスにPOSTするモジュールを作り直すことに。
作った人間がもういなくなったので/誰も直してくれないので、自分で直すしかない。
該当ソースを見ると、WinInetを使って、IntenetOpen()した後、InternetOpenUrl()している。確かにこれだとGETになってしまうはず。
調べてみると、いくつか該当記事が見つかりました。
Windows API, WinInetによるPOST
Is there any good example of http upload using WinInet c++ library
HTTP/HTTPSでPOST(wininet.dll)
基本的には同じで、
InternetOpen()
InternetConnect()
HttpOpenRequest()
HttpSendRequest()
の順に処理をする。POSTだけでなく、GETとか他のメソッドにも使えるらしいので、基本的にはこれで共通関数にすれば使い回しできるかと。
上記の例では、全て、TCHARで文字を処理しているのだけれど、自分の扱っているものでは、全てchar型で処理してもOKでした。これは、HttpSendRequest()=HttpSendRequestA()になっているあたりとも関係していると思いますが、厳密には追いきれていない。
また、 HttpSendRequest()の際、lpOptional部分はBASE64でエンコードしないと、文字化けするので注意。
0 件のコメント:
コメントを投稿