2011-07-12 7 views
0

私はサードパーティのプロバイダから比較的新しいAPIで作業しようとしています。基本的な使い方は、XMLとしてフォーマットされたクエリをPOSTすることです。プログラムでxmlデータをリソースに投稿し、結果をシリアル化します

http://provideraddress.com/?xml=にMyXML

ターンでは、私はXMLフォーマットされた応答を受信する必要がありますので、理論的には、POSTのURIは次のようになります。

それはしばらくの間をされているので、私はこれを行うための最善の方法に苦しんだ(実際には、私は「最高」についてあまり気にしない、とうまく動作するものを得るために解決します)。

これまでのところ私はWebRequestクラスだけでなく、Webクライアントを使用しようとしました。最新の試みは、xmlデータを手作業で文字列として作成した後で、後者を使用します。私はuriに "xml"パラメータを追加しようとしましたが、それをStreamWriterに書き出しました。まず、何らかのWebResponseオブジェクトを取得しますが、コンテンツの長さは常に-1で、コンテンツタイプはtext/htmlとして報告されますが、どちらも適切ではないようです。次に、私はWebResponseをどのように解析するか、その内容を自分のオブジェクトグラフに直列化するかどうか不安です。

私はかなりググましおよび実施例は、不安定または古いです。私はファイルシステムの作成に対処したくありません。理想的には、自分のリクエストオブジェクトグラフを記入し、XMLにシリアル化し、POSTを送信し、応答オブジェクトグラフにシリアル化できるものを受け取ることができます。

ご協力いただければ幸いです。

+0

FYI、私は誰も私の仕事をするように求めているわけではありません。 – nkirkes

答えて

0

最も簡単にWebクライアントを使用することです:

class Program 
{ 
    static void Main() 
    { 
     using (var client = new WebClient()) 
     { 
      client.Headers[HttpRequestHeader.ContentType] = "text/xml"; 
      string xml = @"<foo><bar>baz</bar></foo>"; 
      string url = "http://provideraddress.com/?xml=myxml"; 
      string response = client.UploadString(url, xml); 
      Console.WriteLine(response); 
     } 
    } 
} 

今までリクエスト文字列を使用すると、.NETで利用できる多くの方法のいずれかを使用でき懸念している生成など:XDocumentXmlWriterXmlDocument(これをXDocument、XmlReader、XmlDocumentを使って解析するか、オブジェクトに逆シリアル化して返すことができます。 XmlSerializerを使用してグラフを作成します。

サーバーがコンテンツタイプtext/htmlで応答し、あなたがPOSTしたXMLがサーバーが予期していたフォーマットではなかったため、サーバーが予期していたHTTP要求ヘッダーを提供しなかったため、サーバーがあなたのリクエストを処理中に何らかのエラーが発生しました。サードパーティAPIのドキュメントを読み、そのフォーマットを尊重していることを確認してください。まず認証が必要なAPIがいくつかあります。そのため、ユーザー名とパスワードを使用してURLにリクエストを送信する必要があり、認証が成功すると、サーバーはすべての後続リクエストで送信する必要があるトークンまたはCookieを送り返します。

+0

ありがとうダーリン。私はその方法を試みました。私はヒットしようとしているリソースに何か問題があると思っています。私は彼らのサポートグループに連絡しました。 – nkirkes

関連する問題