zoukankan      html  css  js  c++  java
  • 【HttpClient】HttpRequestHeaders.From提示The specified value is not a valid 'From' header string.

    前言

    报错原因:From需要是邮件地址的格式。

    协议头说明示例状态
    From 发起此请求的用户的邮件地址 From: user@itbilu.com 固定

    参考:

    https://blog.csdn.net/m0_37730732/article/details/82263609

    https://itbilu.com/other/relate/EJ3fKUwUx.html#http-request-headers

    http://www.iana.org/assignments/message-headers/message-headers.xhtml

    代码

                HttpRequestMessage httpRequestMessage = new HttpRequestMessage();
                httpRequestMessage.Headers.Add("from", "mywork");
                httpRequestMessage.Headers.Add("timestamp", timestamp);
                httpRequestMessage.Headers.Add("signature", signature);
                httpRequestMessage.Headers.Add("client-name", client_name);
                httpRequestMessage.Method = HttpMethod.Get;
                httpRequestMessage.RequestUri = new Uri(Domain + requestUrl);
    
                HttpResponseMessage response = await _client.SendAsync(httpRequestMessage);
    
                string r = string.Empty;
    
                if (response.IsSuccessStatusCode)
                    r = await response.Content.ReadAsStringAsync();
    
                return r;

    错误信息

    The format of value 'mywork' is invalid.

       at System.Net.Http.Headers.HttpHeaderParser.ParseValue(String value, Object storeValue, Int32& index)
       at System.Net.Http.Headers.HttpHeaders.ParseAndAddValue(HeaderDescriptor descriptor, HeaderStoreItemInfo info, String value)
       at System.Net.Http.Headers.HttpHeaders.Add(String name, String value)

    解决办法

    目前没找到合适的处理方式,暂时使用HttpWebRequest请求

            public static string HttpGet(string url, string Accept, string ContentType, Dictionary<string, string> headers)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";
    
                if (Accept.NotEmpty())
                    request.Accept = Accept;
    
                if (ContentType.NotEmpty())
                    request.ContentType = ContentType;
    
                if (headers != null)
                    foreach (KeyValuePair<string, string> item in headers)
                    {
                        request.Headers.Add(item.Key, item.Value);
                    }
    
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    return reader.ReadToEnd();
                }
            }
  • 相关阅读:
    socket.io带中文时客户端无法响应
    JQ树插件 — zTree笔记
    cecium 笔记
    express处理跨域问题,中间件 CORS
    一些接口
    express 3.5 Err: request aborted
    ovirt kvm嵌套虚拟化
    kvm实现快速增量盘模式的克隆脚本
    kvm命令
    kvm 中 Guest Is already in use 处理办法
  • 原文地址:https://www.cnblogs.com/masonblog/p/15655721.html
Copyright © 2011-2022 走看看