2010-12-31 13 views
0

私たちのプロジェクトには、WebサイトにXMLデータを投稿するWebページがあります。ASP.NETのタイムスタンプの問題を逆シリアル化する

弊社のWebページでの受信側の
string data = string.Concat("XMLParameter=", SampleXML, "&", "AccessCode=", "XYZ"); 
if (uri.Scheme == Uri.UriSchemeHttp) 
{ 
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); 
    request.Method = WebRequestMethods.Http.Post; 
    request.ContentLength = data.Length; 
    request.ContentType = "application/x-www-form-urlencoded"; 
    StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
    writer.Write(data); 
    writer.Close(); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    StreamReader reader = new StreamReader(response.GetResponseStream()); string tmp = reader.ReadToEnd(); 
    response.Close(); 
    Response.Write(tmp); 
} 

我々はポストでは、次のXMLを渡す、

<notification timestamp="2009-09-11T11:51:07+02:00"> 
    <reservation creation_date="2010-09-10T12:03:13"> 
    </reservation> 
</notification> 

、タイムスタンプ我々は+が含まれていない受信。 +の代わりに、スペース文字を与えます。したがって、それをデシリアライズしている間に、エラーが発生します。

は、我々が得るのRequest.Form [ "XMLParameter"]

すべてのソリューションを使用して、ページ内のデータ???

答えて

1

XMLデータが含まれているテキストフィールドを持つHTMLフォームから来ているかのように、XMLデータが投稿される面白いサービスがあります。

結果として、ウェブサーバは、あなたのデータがURLエンコードされることを期待しています。コンテンツタイプでは、エンコードされていると伝えます。しかし、そうではありません。コード内のどこにでもエンコードする必要はありません。

面白いサービスをしたい場合は、XMLデータをHttpUtility.UrlEncodeから実行する必要があります。

+0

コドー、面白いようですが、そうではありません。実際には他のWebサイトとの統合のためにWebサービスを作っています。しかし、古いWebサイトやPHPサイトのいくつかはPOSTを使ってデータを送信しています。そして、Webサービスを強制的に使用することは難しいことが分かります。とにかく、申し訳ありませんが私が望むものを完全にクリアするexplainationを書くことができなかった場合。しかし、私はこれを試して、サンプルを送って、それがエンコードされているかどうかを確認するために第三者に行くべきだと思いますか?エンコードされたURLを送信する場合、オプションはありますか?私が言ったように私はそれらを変更することはできませんでした:) –

+0

彼らはそれをURLエンコードして送信する必要があります。そうしないと、データをパラメータXMLParameterとAccessCodeに分割できなくなります。組み込み関数_urlencode_が含まれているので、PHPで実現するのは難しいことではありません。 – Codo

+0

はい。私は彼らが第三者の人々であるので、彼らが何を使用しているのか分かりません。彼らはちょうど彼らが私たちにポストデータを送信し、上記の形式を与えてくれることを教えてくれた。彼らと話をして、彼らの反応を見てみましょう。私は彼らがあなたの答えに応じてurlencodedを渡すべきだと思います。 –

関連する問題