2

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

我找到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>();

统一图书馆:

    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);
    }
4

2 回答 2

0

错误消息说:

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

Content-Type,顾名思义,是一个内容标题。因此,将其设置为msg.Content.Headers,而不是msg.Headers

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

于 2016-04-26T03:20:44.750 回答
0

好的,它不起作用,因为 Mashape 提供的语法不好。在这种情况下 header.Key 必须是“ContentType”(参考:https ://msdn.microsoft.com/en-us/library/system.net.httprequestheader%28v=vs.110%29.aspx )。

我很抱歉我的垃圾帖子,谢谢@codran,你的回答帮助我找到了这个答案。

于 2016-04-26T04:12:19.780 回答