Windows Mobile6.1でのHTTP通信について

このQ&Aのポイント
  • Windows Mobile6.1でのHTTP通信に関する問題と解決方法について
  • Windows Mobile6.1でのHTTP通信で発生するエラーについて
  • Windows Mobile6.1でのHTTP通信のソースコード例と設定について
回答を見る
  • ベストアンサー

Windows Mobile6.1でのHTTP通信について

開発環境:Visual Studio 2008 SP1 OS:Windows XP SP3 はじめまして。 現在Windows Mobile端末向けのアプリケーション開発の中でHTTP通信を行う部分を作成しているのですが、 ターゲットとなる実機(SoftBank X05HT)で動作させると、特定の状況でエラーが出ることがわかりました。 具体的に申しますと、実機を立ち上げた直後にアプリを起動した場合は、CHttpFile::SendRequest()を呼び出した直後に 内部エラー「CInternetException for error 12031」が発生し、画面上に「サーバー名またはアドレスは解決されませんでした」 または「サーバーに接続できませんでした」と表示されるというものです。 前述のメッセージは接続するサーバーをドメイン指定した場合に表示され、後述のものはIPアドレスを直接指定した場合に表示されます。 但しこの現象は一度ブラウザ(付属のOpera Mobile)を起動し、適当なサイトを表示した後には発生しなくなります。 端末側での設定の問題などの可能性もありますが、何か情報がございましたらどうかご教示いただけます様お願い致します。 以下は大まかなソースコードです。 CInternetSession inetSess( _T( "HttpTest" ), 1, INTERNET_OPEN_TYPE_PRECONFIG ); BOOL bRet = FALSE; DWORD dwServiceType; CString sURL, sServer, sObject; sURL = "http://123.456.789.000/ABC/output.php?type=status"; ::AfxParseURL(sURL, dwServiceType, sServer, sObject, nPort); CHttpConnection* lpHttpConn = inetSess.GetHttpConnection( sServer, nPort ); CHttpFile* lpHttpFile = lpHttpConn->OpenRequest( CHttpConnection::HTTP_VERB_GET, sObject ); lpHttpFile->SendRequest();

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>実機を立ち上げた直後にアプリを起動した場合は~ ネットワークにつながっていますか? 勝手にダイヤルアップなどで接続することはないと思われますので、自分で接続処理をする必要があるかと。 >但しこの現象は一度ブラウザ(付属のOpera Mobile)を起動し、適当なサイトを表示した後には発生しなくなります。 Operaがネットワーク接続処理などを行ったから…でしょう。 http://pc.nikkeibp.co.jp/article/NPC/20071101/286173/ のような自動ダイヤルアップソフトが導入済みであれば 接続しようとした時点でダイヤルアップしてくれます。 あるいはOperaやInternet Explorer Mobileの用に自前で接続する。 とか…。 http://www.amazon.co.jp/dp/4797345764 の本にその場合の接続方法が載っていたかと。

wmpg2009
質問者

お礼

>>Wr5様 ご回答ありがとうございます。 急遽Windows Mobileでの開発を始め、HTTP通信のサンプルやMSDNでのヘルプを参照して上記のコードに至りましたが、別途ネットワークへの接続処理が必要となるということを完全に見落としていました。 Connection Manager APIを使用し、接続を確立することで問題を解決することができました。ご紹介頂きました書籍についても、改めて時間を作って参考にさせて頂きたいと思います。 本当にありがとうございました。

関連するQ&A

  • wininetのSendRequestでエラー

    すみませんが、自分の知識不足の為に原因が分からない為、質問させてもらいます。 現在、こちらで作成しているプログラムで、WininetでHTTP通信をしているプログラムがあるのですが、本処理で以下の事象が発生しています。 事象発生のプログラム処理概要 (1)以下の処理でセッション生成 CInternetSession* g_pSession = new CInternetSession(); (2)上記処理後、以下の順で通信処理実施 CHttpConnection* pConn = g_pSession->GetHttpConnection(サーバ名, ポート番号); CHttpFile* lpHttpFile = pConn->OpenRequest(CHttpConnection::HTTP_VERB_POST, 相対パス); BOOL bRet = lpHttpFile->SendRequest(ヘッダ, データ, データ長); この後、接続したサーバに対して、一定間隔で空データで通信を行い、相手側の生死チェックを行っているのですが、一定時間通信をしていると、ERROR_INVALID_HANDLE(ハンドル無効)のエラーが出て、セッションを張り直すまで回復しない(ハンドル無効が出続ける)状態になります。 言語はC++で作成しており、動作環境はWindows7SP1になります。 この手の通信は、同じハンドルを使用し続けるとダメだとか、そういう制約や問題は聞いたことがなかったため、このような事象に心当たりがある方がいたら、教えて頂けますでしょうか。

  • HTTP500内部サーバーエラー

    nissenさんのホームページを開こうとすると、HTTP500内部サーバーエラーと表示されてしまいます。 キャッシュの削除、HTTPエラーメッセージを簡易表示するをOFFに設定しました。 再度アクセスすると、 エラー '80004005' /redirect.asp, 行 92 と表示されました... http://www.nissen.co.jp/ 他の方はどうもないのでしょうか? 困っています。解決策を教えてください(T_T)

  • Apache HTTP Server

    インストール時にIP番号 「127.0.0.1」にApache HTTP Serverを設定し、Apache の「htdocs」 にhello.cgiというファイルを保存したのに、 1. Apacheを立ち上げると httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168.131.65 for ServerName とエラー表示(?)されます。 2. URLを「http://127.0.0.1/hello.cgi」と指定してもブラウザ(FireFox)には 「127.0.0.1 のサーバへの接続を確立できませんでした。」とエラーになります。 何がいけないのでしょうか? どなたか教えてくださると幸甚です。

  • HTTP ヘッダーの編集について

    HTTPヘッダのことで質問です。 リプライヘッダの情報「X-AspNet-Version:2.0.50727」と表示されていますが 上記リプライヘッダは編集、または削除は可能でしょうか? 開発環境が表示されるのをふせぎたいのですが。 また、可能でしたらその方法を教えてください。 環境:windows 2003 server IIS 6.0 ASP.net 2.0

  • HTTP 500 - 内部サーバー エラーについて

    HTTP 500 - 内部サーバー エラー 教えてgoo のマイページや新規質問の時に、HTTP 500 - 内部サーバー エラー と表示されます。OEは正常です。家にPCが2台あるのですが、もう一台は正常なんです。なにが原因なんでしょうか?また、回復させる方法はあるんでしょうか?一台のPCだけが調子悪いということは、PCの機器の問題と思うのですが、、、? すいません、アドバイスお願いします。

  • HTTP 403の意味

    以前まで普通に見れていたHPが「HTTP 403 エラー」表示で見れなくなりました。 ――――――――――――――――――――― Web サイトによってこのページの表示を拒否されました 可能性のある原因: ・この Web サイトを表示するにはログインが必要です。 詳細情報 このエラー (HTTP 403 アクセス不可) は、Web サーバーに接続できましたが、この Web ページを表示するアクセス許可がなかったことを意味します。 HTTP エラーの詳細はヘルプを参照してください。 ――――――――――――――――――――― ここ数カ月訪問していなかったのですが、以前は普通に入れていました。 このHPはある作家さんが個人で運営するサイトでその作家さんの活動状況などが載せてあり、 閲覧する際も特にID、パスワード制でもなくログインなども必要ありませんでした。 訪問した際も何かアクションを起こした事もないです。(なので規約違反?とかもないと思います) 原因は何でしょうか? 管理人さんにお問い合わせする手段もなく困っています。 分かる方がおられましたらご助言お願致しますm(__)m

  • HTTP405の原因

    PayPalの売り切れページから「ショッピングを続ける」ボタンを押して、自分のサイトに戻ろうとすると、以下のエラーがでてしまいます。 原因は、自分のサイトのプログラムかサーバーの問題だと思うのですが、具体的に何が原因なのかがわかりません。(ちなみに自分のサイトではなく、Google.co.joにリンクを変えてみても同じでした。ヤフージャパンはエラーが出ませんでした) 他に3つのサイトを同じサーバー(XREA)で運営しているので、リンク先をそちらでも試しましたがすべて同じエラーが出てしまいました。 あくまでも予測ですが、<head>内のジャバスクリプトなどが原因のような気がしてます。 ―――ここから Web サイト側でページを表示できません HTTP 405 可能性のある原因: •Web サイトに、プログラム上の問題がある。 対処方法: 前のページに戻る。 詳細情報 このエラー (HTTP 405 許可されていないメソッド) は、Web サイトに接続することはできましたが、Web サイトにプログラム上のエラーがあったことを意味します。 HTTP エラーの詳細はヘルプを参照してください。 ―――ここまで 考えられる原因はなんでしょうか。 詳しい方よろしくおねがいします。

  • cakephp HTTP403エラー

    初心者ですが、レンタルサーバーを変更し、cakephpを利用している既存のデータ等をそのまま新しいサーバーに移動したのですが、URL:hhtp://www.○○○.jpでHTTP403のエラーが出てしまいます。 但し、URL:hhtp://www.○○○.jp/cakephp/ ではエラーは出ず、レイアウトがズレて表示されます。(CSSのパスの原因で)。またデータベースのデータも表示されます。 CAKEPHPはドメイン直下に配置し、webrootもフォルダ内にあります。 レンタルサーバのため、apacheの編集もできません。(ディレクトリの変更などもできません) いろいろ調べて、cakephp内の3つの「.htaccess」のmod_rewrite、app/temp/のパーミッション等の変更も試しましたが、うまくいきません。 HTTP403のエラーの回避方法を教えてください。よろしくお願いいたします。 ・APACHE :2.x ・PHP    :5.3 ・MYSQL  :5.1

  • HTTP 500 内部サーバーエラー

    今特定のホームページを見ようとしているのですが、 「HTTP 500 内部サーバーエラー」 「Webサイトはページを表示できません」 と出て、拒否されます。 他のページは問題なく表示されます。 ページ見たいんですけどどうしたらいいですか? 上記表示はIE10のブラウザから返されました。 これ以外にも、相手サーバーから500エラーを返されることもあります。 この問題の解決方法、いくら探しても見つかりません。

  • はじめまして。「拡張されたHTTPステータスコード」をWindows版

    はじめまして。「拡張されたHTTPステータスコード」をWindows版のApacheで 返却する方法をご教授下さい。 [経緯] 現在とあるWEBサービスを使用するためのPHPクライアントを作成しております。 PHPクライアントはHTTP経由のGETでパラメータを送り サーバ側もHTTPでクライアントへ結果を返却します。 その結果を元にクライアント側で処理を行います。 但し、サーバ側の結果は「拡張された」HTTPステータスコードで返却されます。 ※「拡張された」HTTPステータスコードは「0」「30」「-3000~-3012」など サーバ側の環境が無いため、現在モックを作成してクライアントの 挙動確認を行おうと考えております。が、モック作成が上手くいかないのです。 モック(PHPモジュール)からRFCに定義されていないHTTPステータスコードを 返却すると、Apacheが500のInternal Server Errorを返却してしまいます。 尚、Windows版のApacheでは上記のような動作となるのですが Linux版のApacheでは、指定したHTTPステータスコードが返却されます。 どなたかWindows版のApacheで、「拡張されたHTTPステータスコード」を 返却する方法をご存知では無いでしょうか? [環境]  サーバOS:Windows Vista Home Premium  WEBサーバ:Apache2.0(Windows版インストーラ使用)  CGI:PHP5.2.12(Windows版Zipを使用) [構図]   (WEBサービス)     ↑|   GET|| HTTPステータスコード     |↓  (PHPクライアント) [サーバ側モジュール例] <?php header('HTTP/1.1 3000 Precondition Failed'); ?> 以上、よろしくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう