我正在编写一个windows forms
应用程序,用户必须输入电子邮件地址,我需要检查它是否有效。
我找到了Mashape API
,但我得到了一个例外;
Unirest 库中的"System.Net.Http.dll 中发生类型为'System.InvalidOperationException'的未处理异常"错误。
错误与msg.Headers.Add(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);
}
错误消息说:
"确保请求标头与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage 一起使用,内容标头与 HttpContent 对象一起使用。
顾名思义,Content-Type
是一个内容标头。因此,请将其设置为 msg.Content.Headers
,而不是 msg.Headers
。
如果我没记错的话,您可以直接通过msg.Content.Headers.ContentType = new MediaHeaderTypeValue("application/json");
进行设置
好吧,它不起作用,因为Mashape提供的语法不好。在本例中为标头。键必须是"内容类型"(参考:https://msdn.microsoft.com/en-us/library/system.net.httprequestheader%28v=vs.110%29.aspx)。
我很抱歉我的垃圾帖子,谢谢你@codran,你的回答帮助我找到了这个答案。