2016-04-26 125 views
1

我正在编写一个windows forms应用程序,其中用户必须输入电子邮件地址,我需要检查它是否有效。http请求中的操作无效

我发现Mashape API但我得到一个异常;

“Unirest库中出现”System.Net.Http.dll中发生类型'System.InvalidOperationException'的未处理的异常“错误。在线路中发生与msg.Headers.Add(header.Key, header.Value);

错误是:

  • header.Key = “内容类型”
  • header.Value = “应用/ JSON”

Debugger举报:

确保请求标头与HttpRequestMessage一起使用,使用HttpResponseMessage响应标头以及使用HttpContent对象的内容标头。

我找不到任何解决方案,没有任何人有任何想法如何解决它

Task<HttpResponse<EWSemail>> response = Unirest.post("https://email.p.mashape.com/") 
    .header("X-Mashape-Key", myKey) 
    .header("Content-Type", "application/json") 
    .header("Accept", "application/json") 
    .body("{\"email\":\"" + tbEmail.Text + "\"}") 
    .asJsonAsync<EWSemail>(); 

Unirest库:

private static Task<HttpResponseMessage> RequestHelper(HttpRequest request) 
    { 
     if (!request.Headers.ContainsKey("user-agent")) 
     { 
      request.Headers.Add("user-agent", USER_AGENT); 
     } 

     var client = new HttpClient(); 
     var msg = new HttpRequestMessage(request.HttpMethod, request.URL); 

     foreach (var header in request.Headers) 
     { 
      msg.Headers.Add(header.Key, header.Value); 
     }     // ^^"Content-Type" ^^ "application/json" 

     if (request.Body.Any()) 
     { 
      msg.Content = request.Body; 
     } 

     return client.SendAsync(msg); 
    } 

回答

0

错误消息说:

“请确保请求标头与HttpRequestMessage,使用HttpResponseMessage的响应标头和使用HttpConten的内容标头一起使用t对象“。

Content-Type,正如名称暗示的那样,是内容标题。因此,将其设置为msg.Content.Headers,而不是msg.Headers

如果我没记错的话,你可以通过msg.Content.Headers.ContentType = new MediaHeaderTypeValue("application/json");