我有一个Web服务,它接受XML输入。我想要做的是设置一个aspx页面,将xml发布到服务。到目前为止,这是我的代码,但是当我尝试提交时,我收到错误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服务方法的任何好的网络资源,这也是一个很好的帮助,并会回答这个问题,因为我可以这样重新工作。
感谢。
在上一次编辑中,我将代码修改为.contentlength(感谢您的帮助)。不幸的是,在此之后,我仍然收到“错误请求”。如果有人可以确认/否认我的代码应该正常工作,我将开始调查服务本身。
答案 0 :(得分:1)
我不是网络服务专家,但我将您的代码与我的一些工作代码进行了比较,唯一相关的区别是您没有设置请求的ContentLength。
myWebRequest.ContentLength = strDataToPost.Length()
答案 1 :(得分:1)
如果您要将时间字符串连接到它,那么您尝试发布的数据可能看起来有点滑稽:
strDataToPost = DataToSend.Text & Server.UrlEncode(Now())
如果DataToSend是正确的XML,那么您正在添加Url Encoding of Now(),这使我认为它将不再是有效的XML。
检查以确保您的StreamWriter未插入其他字符(CR,LF)。如果是,那么您发送的长度与实际数据不对应,但在开始发送内容长度之前可能不会引起问题。
您的Web服务配置是否直接接受XML?我想知道您是否可能必须将XML封装在multipart / form-data中,以便您的Web服务接受它。