使用WebRequest Class发送XML

时间:2014-12-02 10:27:51

标签: c# php httpwebrequest

您好我想使用webrequest类将以下XML数据发送到Web服务器。我通过发布单个变量成功完成了它。但我无法将解析后的XML包含在其中。请帮帮我。

static void Main(string[] args)
    {
        using (XmlReader reader = XmlReader.Create("filepath"))
        {
            while (reader.Read())
            {
                switch (reader.NodeType)
                { 
                    case XmlNodeType.Element:
                        Console.WriteLine("Start Elemet {0}", reader.Name);
                        break;
                    case XmlNodeType.Text:
                        Console.WriteLine("Text Node: {0}", reader.Value);
                        break;
                    case XmlNodeType.EndElement:
                        Console.WriteLine("EndElement {0}", reader.Name);
                        break;
                    default:
                        Console.WriteLine("Other node {0} with value {1}",
                                        reader.NodeType, reader.Value);
                        break;
                 }
            }
        }
    }    

下面是我从msdn网站获得的代码,通过这个我想发送上面的XML数据。

   public class WebRequestPostExample
{
    public static void Main ()
    {
        // Create a request using a URL that can receive a post. 
        WebRequest request = WebRequest.Create ("http://www.contoso.com/PostAccepter.aspx ");
        // Set the Method property of the request to POST.
        request.Method = "POST";
        // Create POST data and convert it to a byte array.
        string postData = "This is a test that posts this string to a Web server.";
        byte[] byteArray = Encoding.UTF8.GetBytes (postData);
        // Set the ContentType property of the WebRequest.
        request.ContentType = "application/x-www-form-urlencoded";
        // Set the ContentLength property of the WebRequest.
        request.ContentLength = byteArray.Length;
        // Get the request stream.
        Stream dataStream = request.GetRequestStream ();
        // Write the data to the request stream.
        dataStream.Write (byteArray, 0, byteArray.Length);
        // Close the Stream object.
        dataStream.Close ();
        // Get the response.
        WebResponse response = request.GetResponse ();
        // Display the status.
        Console.WriteLine (((HttpWebResponse)response).StatusDescription);
        // Get the stream containing content returned by the server.
        dataStream = response.GetResponseStream ();
        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader (dataStream);
        // Read the content.
        string responseFromServer = reader.ReadToEnd ();
        // Display the content.
        Console.WriteLine (responseFromServer);
        // Clean up the streams.
        reader.Close ();
        dataStream.Close ();
        response.Close ();
    }
}

我希望接收端以PHP格式结束。

1 个答案:

答案 0 :(得分:0)

试试这个

XElement xml=XElement.Load(xmlFile);

HttpWebRequest request = WebRequest.Create(new Uri(destinationUrl));

byte[] data = Encoding.Default.GetBytes(xml.Value);
request.Method = "POST";
request.ContentType="application/xml";
request.ContentLength = data.Length;

Stream sout = request.GetRequestStream();
sout.Write(data, 0, data.Length);
sout.Flush();
sout.Close();

HttpWebResponse response = request.GetResponse();