2011-05-11 3 views
13

HttpWebRequestを使用してGETリクエストを送信しようとしています。
ウェブ全体で多くの例が見つかりました(たとえば、this one ...ちょうどScrape()の方法になります)。彼らは皆、基本的には同じことを実行します。WP7プロジェクトでHttpWebRequest.GetResponse()が見つかりません

はその後HttpWebRequestからGetResponse()方法を使用して応答を取得し、WebRequest.Create(URL)を使用してHttpWebRequestにそれをキャストすることによってHttpWebRequestオブジェクトを作成します。

GetResponse()は、HttpWebRequestまたはWebRequest(基本クラス)のいずれにも存在しないようです。私の唯一の選択肢はBeginGetResponse()です。

BeginGetResponse()は非同期であり、Silverlightは非同期のみを許可しますが、GetResponse()は同期です。まあ、それは、すべてがXNAプロジェクトなので、私を助けません。これは内部で作成したシンプルなC#クラスです。
がよく、より正確には、これは、XNA 4.0で作成し、Windowsの携帯電話のゲームです

HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest; 
StreamReader responseReader = new StreamReader( 
     webRequest.GetResponse().GetResponseStream()); 

誰もが私がGetResponse()を持っていない理由として、どんな考えを持っていますか?

+3

が、これはWindowsの携帯電話のためですか?そうであれば、要求は依然として非同期のみです。 – keyboardP

+0

私は問題が一度もなかった。 [GetResponse()](http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse%28v=VS.90%29.aspx)を参照してください - しかし、私は "通常の" 。ネット。 XNAの違いに注意してください。 –

+0

Aaaah、そうです。うん、それはWP7だ。私はちょうど私の質問を編集し、あなたの答えに気づく前にそれを加えました。 Hehe、私が2時間前にそれを知っていたらいいなあ。それは間違いなく私に頭痛を救ったでしょう。助けてくれてありがとう –

答えて

16

Windows Phone 7のXNA 4は、非同期呼び出しのみ可能です。 this postの下部にあるコードも参考になります。そのポストから

コード:

protected override void Initialize() 
{ 
    string webServiceAddress = @"http://localhost/service/service1.asmx";   
    string methodName = "HelloWorld"; 

    string webServiceMethodUri = string.Format("{0}/{1}", webServiceAddress, methodName); 

    HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(webServiceMethodUri); 
    httpWebRequest.Method = "POST"; 

    httpWebRequest.BeginGetResponse(Response_Completed, httpWebRequest); 

    base.Initialize(); 
} 

void Response_Completed(IAsyncResult result) 
{ 
    HttpWebRequest request = (HttpWebRequest)result.AsyncState; 
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result); 

    using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) 
    { 
     string xml = streamReader.ReadToEnd(); 

     using(XmlReader reader = XmlReader.Create(new StringReader(xml))) 
     { 
      reader.MoveToContent(); 
      reader.GetAttribute(0); 
      reader.MoveToContent(); 
      message = reader.ReadInnerXml(); 
     } 
    } 
} 
+1

ニース、それはまさに私が探しているものです。ありがとう! –

+0

喜んでそれを助けました:) – keyboardP

+0

リンクはもう有効ではありません。あなたは更新していただけますか? – Asahi

関連する問題