C#.net web.client(UploadString())模仿CURL,没有数据

时间:2017-05-18 20:39:36

标签: c# .net curl webclient

我的项目需要 GET 来验证用户身份。 这是我试图模仿的CURL

curl -H "Content-Type: application/json" -H "header1: headerData" -k -X GET https://url.com/x1/users/userSlug

C#我正在使用

using (var client = new WebClient())
{
var urlEndPoint= URL + '/' + UserSlug;

client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
client.Headers.Add("header1", headerData);
try
{
PopulatedUser = serializer.Deserialize<User>(client.UploadString(new Uri(urlEndPoint), "GET", String.Empty));
return PopulatedUser;
}
catch (WebException e)
   {
   PopulatedUser = serializer.Deserialize<User>(new StreamReader(e.Response.GetResponseStream()).ReadToEnd());
 //TODO: find server log code examples for errors
 return PopulatedUser;
     }
 }

使用String.Empty,我得到了

  

InnerException = {“无法使用此动词类型发送内容正文。”}

我不知道如何处理这个并获得用户数据的回复。

当我执行CURL命令时,我回来了

  

{     “状态”:“好”,     “代码”:200,     “data”:{“user”:{“id”:“thisguy”,userFirstname:“bob”.... etc

1 个答案:

答案 0 :(得分:0)

您没有向服务器上传任何内容,因此您不应该使用UploadString - 上传通常会使用POSTSTOR(对于ftp),但不会GET,这可能是出错的地方。

请改用DownloadString。它使用GET

所以,而不是:

client.UploadString(new Uri(urlEndPoint), "GET", String.Empty)

使用:

client.DownloadString(new Uri(urlEndPoint))