【问题标题】:Post XML to a web service将 XML 发布到 Web 服务
【发布时间】:2011-01-19 23:04:07
【问题描述】:

我有一个接受 XML 输入的网络服务。我想要做的是设置一个将 xml 发布到服务的 aspx 页面。到目前为止,这是我的代码,但是当我尝试提交时收到错误 400(错误请求)...

Imports System.Net
Imports System.IO

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Submit.Click
        Dim strDataToPost As String
        Dim myWebRequest As WebRequest
        Dim myRequestStream As Stream
        Dim myStreamWriter As StreamWriter
        Dim myWebResponse As WebResponse
        Dim myResponseStream As Stream
        Dim myStreamReader As StreamReader


        ' Create a new WebRequest which targets the web service method
        myWebRequest = WebRequest.Create("http://foo/p09SoapHttpPort")

        ' Data to send 
        strDataToPost = DataToSend.Text & Server.UrlEncode(Now())

        ' Set the method and content type
        With myWebRequest
            .Method = "POST"
            .ContentType = "text/xml"
            .Timeout = -1
            .ContentLength = strDataToPost.Length()

        End With



        ' write our data to the Stream using the StreamWriter.
        myRequestStream = myWebRequest.GetRequestStream()
        myStreamWriter = New StreamWriter(myRequestStream)
        myStreamWriter.Write(strDataToPost)
        myStreamWriter.Flush()
        myStreamWriter.Close()
        myRequestStream.Close()

        ' Get the response from the remote server.
        myWebResponse = myWebRequest.GetResponse()

        ' Get the server's response status
        myResponseStream = myWebResponse.GetResponseStream()
        myStreamReader = New StreamReader(myResponseStream)
        ResponseLabel.Text = myStreamReader.ReadToEnd()
        myStreamReader.Close()
        myResponseStream.Close()

        ' Close the WebResponse
        myWebResponse.Close()

    End Sub
End Class

如果有人知道任何关于如何将 .xml 文件上传到 Web 服务方法的好的网络资源,这也将是一个很大的帮助,并且会回答这个问题,因为我可以用这种方式重新工作。

谢谢。

PS 在上次编辑中,我将代码修改为 .contentlength(感谢您的帮助)。不幸的是,在此之后我仍然收到“错误请求”。如果有人可以确认/确认我的代码应该正常工作,我将开始调查服务本身。

【问题讨论】:

  • 运行的错误是:远程服务器返回错误:(400) Bad Request.

标签: asp.net xml web-services post


【解决方案1】:

如果您将时间字符串连接到它,您尝试发布的数据可能看起来有点滑稽:

strDataToPost = DataToSend.Text & Server.UrlEncode(Now())

如果 DataToSend 是正确的 XML,那么您正在添加 Now() 的 Url Encoding,这让我认为它不再是有效的 XML。

检查以确保您的 StreamWriter 没有插入其他字符(CR、LF)。如果是这样,那么您发送的长度与实际数据不对应,但在您开始发送内容长度之前,这可能不会导致问题。

您的 Web 服务配置是否直接接受 XML?我想知道您是否可能必须将 XML 封装在 multipart/form-data 中才能让您的 Web 服务接受它。

【讨论】:

  • 大卫你的传奇!我删除了编码,现在可以正常工作了!
【解决方案2】:

我不是网络服务专家,但我将您的代码与我拥有的一些工作代码进行了比较,唯一相关的区别是您没有设置请求的 ContentLength。

myWebRequest.ContentLength = strDataToPost.Length()

【讨论】:

  • 感谢 Jason 的帮助,我现在添加了 contentlength 并且仍然收到 400 错误。我很高兴看到我的代码“应该”正常工作,所以我认为是时候研究一下服务本身了。
猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多