1.HTTPサーバアクセス(事前準備)

WM5でHTTPアクセスの手法を調査する。
具体的には、価格comのWebサービスを利用し、「rx4540」の最新最低価格を調査するプロトタイプを作成する

処理方式

価格comWebサービス商品検索APIを使用し、「rx4540」を検索。検索結果の中から「最新最低価格」を取得する。

事前調査

使えない物
MSDN2ライブラリーによると、次の物は使えないらしい

XSLTemplate オブジェクト
IXSLProcessorインタフェース
XSLTによる文書変換ができない事が痛い
FreeThreadedDOMDocumentオブジェクト XSLTTemplateが使えないんじゃしょうがないね
ServerXMLHTTPオブジェクト
IWinHttpインタフェース
デスクトップOSで使用していた愛用のWinHttpホゲホゲが使えない。SOAP通信も大変だこりゃ

使える物

XMLHTTPオブジェク このオブジェクトは、JavaScript上で動作するプログラム(Ajax)な有益に使えるが、プロキシの設定やサイト認証の手足がないため、今回は×
WinInet HTTP,HTTPS,FTPなど昔から実装されているコンポーネントしか使えないけど、これを使ってゴリゴリ作るしかない
DOM XMLDOMDocumentなどは普通に使えるみたい

その他調査してわかったもの

コンパイラーCOMサポート
comdef.hや#import 系

COM使用時にComPtr<>ではなく、#importでIDLからスマートポインタを作成する仕組みを利用しようとしたが、comdef.hでコンパイルエラーが発生

WM5には存在しないAPIのlstrlen()を使用していたのでNG。orz

それでも _bstr_t や _variant_t は使用したいので 「comutil.h」をインクルードした。

#include <comutil.h> // _bstr_t
# ifdef _DEBUG
# pragma comment(lib, "comsuppwd.lib")
# else
# pragma comment(lib, "comsuppw.lib")
# endif

ATLのCStringの利用

CStringを使用するためには、次の順番でインクルードすることが必要

#define _WTL_NO_CSTRING // CString

#include <atlbase.h>
#include <atlstr.h> // CString
#include <atlapp.h>

エミュレータからインターネットにアクセスする準備

標準セットアップではエミュレータから直接インターネットに接続することはできないので、
ホストOSに「Virtual Network Service」(Netsvwrap.msi)をインストールしなければならない。
MSDNサポート ダウンロード

デバイスエミュレータマネージャ上で「グレードル接続」すると、ゲストOS(WM5)とActiveSyncが接続され、通信ができる


stdafx.hは次のようになった

//  or project specific include files that are used frequently, but
//      are changed infrequently
//
#pragma once
// Change this value to use different versions
#define WINVER _WIN32_WCE
#define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA
#define _WIN32_WCE_AYGSHELL 1
#define _WTL_NO_CSTRING                         // CString
#include <atlbase.h>
#include <atlstr.h>                             // CString
#include <atlapp.h>
#include <atlutil.h>                            // CUrl
#include <atlctrls.h>                           // CWaitCursor
#include <atlctrlx.h>                           // CWaitCursor
#include <msxml2.h>                             // XMLDOM
#include <comutil.h>                            // _bstr_t
# ifdef _DEBUG
# pragma comment(lib, "comsuppwd.lib")
# else
# pragma comment(lib, "comsuppw.lib")
# endif
extern CAppModule _Module;
#include <atlwin.h>
#include <aygshell.h>
#pragma comment(lib, "aygshell.lib")

Topへ戻る
前へ
次へ