如何使用具有确切定义名称的HttpRequestMessage在C#(Xamarin)中发送自定义标头?

时间:2018-03-23 12:07:14

标签: c# http dotnet-httpclient

我需要将带有自定义标头的Http请求发送到在PHP上运行的服务器代码。

我使用以下代码:

preparedAddress是字符串url; AuthenticationLine和dateValue也是定义的字符串值。 ' JSON'变量包含准备好的字符串

以下是代码:

client = new HttpClient();
client.MaxResponseContentBufferSize = 256000;
int _TimeoutSec = 90;
client.Timeout = new TimeSpan(0, 0, _TimeoutSec);
string _ContentType = "application/json";
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_ContentType));
var uri = new Uri(String.Format(preparedAddress));
System.Net.Http.HttpRequestMessage msgToSend = new HttpRequestMessage(HttpMethod.Post, uri);
//my custom headers
        msgToSend.Headers.Add("SN-Authentication", AuthenticationLine);
        msgToSend.Headers.Add("SN-Date", dateValue);
 var content = new StringContent(json, Encoding.UTF8, "application/json");
 content.Headers.ContentType = new MediaTypeHeaderValue(_ContentType);
 msgToSend.Content = content;
 HttpResponseMessage response;
        response = client.SendAsync(msgToSend).Result;
        String execResult = response.ReasonPhrase;

在php方面,我有以下获得的数据:

Array (     
[HTTP_SN_AUTHENTICATION] => Array ( [0] => my data 1 )      
[HTTP_SN_DATE] => Array ( [0] => my data 2 )

未明确设置的其他标头,但我不关心它们。

为什么C#改变了头名?如何使用我定义的名称使C#发送头文件?

1 个答案:

答案 0 :(得分:0)

问题在于我的PHP代码,标题处理有一点错误。

我很欣赏使用Fiddler工具的建议。我使用了类似的工具--Postman,并且PHP显示的标题格式与请求是从C#代码发送的格式相同。 PHP框架按预期识别和处理标头。

案件已经结束......