2010-06-10

C++/CLIでHTTPアクセス

以前、ツイッタークライアントの記事で書いた内容と同じですが、C++/CLIでHTTPアクセスする方法として2つ書いておきます。

HttpWebRequestを使うならこちら
    String^ result;
    String^ url = "ここにURLを書く";

   //IDとパスワードを設定するならここで
    NetworkCredential^ nc = gcnew NetworkCredential(id,password);  
    try{
      HttpWebRequest^ request = (HttpWebRequest^)HttpWebRequest::Create(url);
      request->Credentials=nc;
      WebResponse^ response = request->GetResponse();
      StreamReader^ reader =     gcnew StreamReader(response->GetResponseStream());
      result = reader->ReadToEnd();
      reader->Close();
      response->Close();
  }catch(System::Net::WebException^ e){
        //ここでなんらかのエラー処理をする
        System::Diagnostics::Debug::WriteLine("エラー:"+ e->Response->ToString());
        return "";
    }


WebClientを使うなら、こんな感じです。
    String^ result;
    String^ url = "ここにURLを書く";
      try{
        WebClient^ client = gcnew WebClient();
        client->Credentials = nc;

        client->Encoding = Encoding::UTF8;

        array^ data =client->DownloadData(url);
        String^ result =Encoding::UTF8->GetString(data);
        return result;

    }catch(System::Net::WebException^ e){
        //ここでなんらかのエラー処理をする
        System::Diagnostics::Debug::WriteLine("エラー:"+ e->Response->ToString());
        return "";
    }


GWTのUIBinderでコンポーネント化を試みる

GWTのUIBinderは、ただ単にUIの記述が楽になると言うだけでなく、UIの部品化(コンポーネント化)を容易に実現することができます。 具体的に言えば、UIBinderにて設計したインタフェース部分は、また別のUIBinderのところで呼び出すことができます。
例えば、あるページの本体構造を定義するMainFormのUI定義ファイルを以下のように定義されていたとします。

MainForm.ui.xml
    
        header
        
            left
            center
            right
        
    
こ の例では、「heder」の領域とその下に、「left」「center」「right」にエリアが並ぶことになります(便宜上、ラベルを配置しています が、、、)。

このヘッダ領域に表示する内容を別のUIBinderで下記のように設計したとします。
HeaderArea.ui.xml

    
    
    
        

試作システムのヘッダ


このようにUIBinderで定 義したUIを一部は、下記のようにすることでMainFormに記述することができます。

MainForm.ui.xml(変更後)

    
    
    
        
        
            left
            center
            right
        
    


こ のように、定義したUIBinderのクラスのパッケージをimportによりXMLのNamespaceに関連付け、利用するクラス名をタグ名として記 述することで、呼び出すことができます。こ れは、インタフェース部分の分業をはかる際に非常に強力になりますので、そういった意味でもUIBinderはおすすめだと思います。