Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mollie payment“Unauthorized Request”虽然使用C#点击URL,但它';他在做邮递员_C#_Asp.net Mvc_Mollie - Fatal编程技术网

Mollie payment“Unauthorized Request”虽然使用C#点击URL,但它';他在做邮递员

Mollie payment“Unauthorized Request”虽然使用C#点击URL,但它';他在做邮递员,c#,asp.net-mvc,mollie,C#,Asp.net Mvc,Mollie,Mollie在中发送请求时付款失败https://api.mollie.com/v2/payments 在System.Net.Http Mollie使用v2/payments的付款请求API通过Postman正常工作,但在c#代码中获得unauthorized请求错误 以下代码 Mollie服务器收到来自的消息 但主要问题是,当点击URL时,Test_api在postman中工作 调用\u httpClient.GetAsync(Uri)在内部创建一个全新的HttpRequestMessag

Mollie在
中发送请求时付款失败https://api.mollie.com/v2/payments

System.Net.Http

Mollie使用
v2/payments的付款请求
API通过
Postman
正常工作,但在
c#
代码中获得
unauthorized
请求错误

以下代码

Mollie服务器收到来自的消息

但主要问题是,当点击URL时,Test_api在postman中工作


调用
\u httpClient.GetAsync(Uri)
在内部创建一个全新的
HttpRequestMessage
对象,而不是使用配置了
授权:
头的对象


使用
\u httpClient.SendAsync(httpRequest)
来实际使用您的对象。

请尝试以下方法:

using(var httpClient = new HttpClient()) {
 httpClient.SetBearerToken(tokenValue);
 var serData = JsonConvert.SerializeObject(modelData);
 var httpRequestContentData = new StringContent(serData, Encoding.UTF8, "application/json");
 using(var result = httpClient.PostAsync(url, httpRequestContentData).Result) {
  if ((int) result.StatusCode == (int) HttpStatusCode.OK) {
   // Go Ahead 
  }

 }
}

关于您的案例,您应该在
\u httpclient
的标题上添加
承载人

_httpClient.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("Bearer", this._apiKey);
现在,由于您将请求主体发送到
GET
请求,这是属于HTTP规范灰色区域的一种非常规构造-最终结果是,许多较旧的软件要么根本无法处理此类请求,要么会显式拒绝它,因为他们认为它的格式不正确

.NET Framework不支持这种开箱即用(您将收到一个
ProtocolViolationException
)。构建客户端时,您可以安装
System.Net.Http.WinHttpHandler
,并使用它而不是默认的
HttpClientHandler

var handler = new WinHttpHandler();
HttpClient _httpClient = new HttpClient(handler);
//Same code as in question

感谢回复,但收到错误
ProtocolViolationException:无法发送此动词类型的内容正文。
谢谢Nikunj,但收到此消息时使用了上述代码
状态代码:401,原因短语:“未经授权的请求”,版本:1.1,内容:System.Net.Http.StreamContent,标题:{X-Content-Type-Options:nosniff严格的传输安全性:最大年龄=31536000;包括子域;预加载日期:周二,2020年1月21日08:53:12 GMT服务器:nginx WWW-Authenticate:Basic realm=“Mollie API-Key”内容长度:209内容类型:application/hal+json
如果我在接收到的消息头中添加令牌。
StatusCode:422,ReasonPhrase:“不可处理实体”,版本:1.1,内容:System.Net.Http.StreamContent,头:{X-Content-Type-Options:nosniff严格传输安全性:最大年龄=31536000;包括子域;预加载日期:周二,2020年1月21日09:00:17 GMT服务器:nginx内容长度:213内容类型:应用程序/hal+json}
尝试为
\u httpclient
设置授权标头:
\u httpclient.DefaultRequestHeaders.authorization=new AuthenticationHeaderValue(“承载人”,this.\u apiKey)
谢谢,我已经做了同样的事情,但是现在正在工作。你可以共享其他东西吗?是的,现在工作了,我也做了同样的事情。你可以共享其他东西吗?谢谢,现在工作了,但是主要的问题是如何发送请求对象?如果我使用
sendsync
获取错误
ProtocolViolationException:无法发送内容-具有此动词类型的正文。
@jishansiddique执行此操作时会得到什么:
\u httpClient.GetAsync(httpRequest.RequestUri.AbsoluteUri).Result;
如果我调用此
\httpClient.GetAsync
无法发送
请求对象
,那么如果我使用
sendsync
获取
动词类型
错误,我们将获得
200状态代码。@jishansiddique查看注释中链接的最后一个答案
_httpClient.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("Bearer", this._apiKey);
var handler = new WinHttpHandler();
HttpClient _httpClient = new HttpClient(handler);
//Same code as in question