我写了一个web服务(web api 2)并使用http Client成功测试了它。其中一个服务获取了一个json字符串并对其进行了验证,然后返回了一个适当的下载流。
现在虽然我发现我需要编写一个3.5 Framework Client来处理整个Transfer(发布json数据然后获取文件)。
作为使用Web客户端获取文本的示例:
private string GetTextFromUrl(string url, JObject jsonObject)
{
WebClient webClient = new WebClient();
webClient.Headers.Add("content-type", "application/json");
return Encoding.ASCII.GetString(webClient.UploadData(url, Encoding.Default.GetBytes(jsonObject.ToString())));
}
现在虽然我有点不知所措。从我看到的webclient开始,只有OpenRead和DownloadFile返回流,而其他所有东西都返回一个字节数组。
两者虽然只使用URL而且不做任何帖子(比如上传数据)。所以我想知道:有没有可能将json数据发布到URL并在Response with Framework 3.5中接收流? (不一定限于webclient)。
编辑: 按要求澄清:客户端将json字符串发布到服务器并在Response中接收流。这就是我试图实现的目标(客户方面明智)。
答案 0 :(得分:0)
我认为你有两个选择,但这不是真正的问题。我想你错过了JSON.NET
使用WebClient 在.NET 3.5中使用webclient的帖子通过指定标题和“POST”方法完成,如下所示。
System.Net.WebClient client = new System.Net.WebClient();
client.Headers.Add("content-type", "application/json");//set content-type header here
string response = Encoding.ASCII.GetString(client.UploadData("http://localhost:1111/Service.svc/SignIn", "POST", Encoding.Default.GetBytes("{\"Data\": \"JSON DATA HERE\"}")));
通常,当您执行上述操作时,您应该从上传方法获得响应,您可以将其分配给变量“响应”,然后使用JSON.NET。
请在此处查看此link。他没有指定方法,但使用JSON.NET,似乎适合他。
使用WebRequest 您也可以尝试WebRequest。请参阅webrequest示例
的此链接希望这有帮助。