27

この単純な Web サービスからの応答を逆シリアル化しようとしています

次のコードを使用しています:

WebRequest request = WebRequest.Create("http://inb374.jelastic.tsukaeru.net:8080/VodafoneDB/webresources/vodafone/04111111");    
WebResponse ws = request.GetResponse();
XmlSerializer s = new XmlSerializer(typeof(string));
string reponse = (string)s.Deserialize(ws.GetResponseStream());
4

3 に答える 3

61

XmlSerializer の宣言

XmlSerializer s = new XmlSerializer(typeof(string),new XmlRootAttribute("response"));

で十分です。

于 2012-10-01T11:53:33.597 に答える
11

XMLを逆シリアル化し、フラグメントとして扱いたいとします。

ここで利用できる非常に簡単な回避策があります。私はあなたのシナリオのためにそれを修正しました:

var webRequest = WebRequest.Create("http://inb374.jelastic.tsukaeru.net:8080/VodafoneDB/webresources/vodafone/04111111");

using (var webResponse = webRequest.GetResponse())
using (var responseStream = webResponse.GetResponseStream())
{
    var rootAttribute = new XmlRootAttribute();
    rootAttribute.ElementName = "response";
    rootAttribute.IsNullable = true;

    var xmlSerializer = new XmlSerializer(typeof (string), rootAttribute);
    var response = (string) xmlSerializer.Deserialize(responseStream);
}
于 2012-10-01T11:39:09.637 に答える