[英]POST NameValueCollection to Web API using WebClient.UploadValues for .NET 3.5
我创建了一个Web API,用于提供PDF文档。 我有一个4.5 / 4.0客户端,一个仅使用Javascript的客户端,现在我正尝试为我们拥有的一些较旧的网站创建.NET 3.5客户端。 我知道我可以NUGET一些库,但是据我了解... HttpClient现在仅在4.0中可用吗?
无论如何,我都想使用WebClient来完成此任务。 目前我有:
Dim js As New Script.Serialization.JavaScriptSerializer
Dim client As New Net.WebClient
client.Headers(Net.HttpRequestHeader.ContentType) = "application/x-www-form-urlencoded"
Dim serializedData As String = js.Serialize(Me.PDFReport)
Dim collection As New NameValueCollection
collection.Add("value", serializedData)
Dim response As Byte() = client.UploadValues("http://www.mywebsite.com/api/report/Post/", collection)
我将序列化的数据推送到NameValueCollection中,以便可以返回其中包含PDF的Byte数组。 我似乎无法将其显示在Web API方面:
Public Function Post(str As NameValueCollection) As Byte()
Dim js As New JavaScriptSerializer
Dim obj As PDFReport = js.Deserialize(Of PDFReport)(str("value"))
Dim rpt As New ReportService(obj)
'Return Nothing (Commented for now until I figure out how to get values)
End Function
我究竟做错了什么? 除非使用UploadString,否则似乎无法通过导线获取值,但是那样我将无法获取适当的响应。
请尝试将您的操作参数修改为FormDataCollection
然后查看它是否有效。 并进行这种检查(将其更改为VB)以捕获任何模型状态错误。
if (!ModelState.IsValid)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, this.ModelState));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.