【发布时间】:2019-08-24 14:19:45
【问题描述】:
我可以使用类似的代码和不记名令牌执行 GET,但似乎无法执行 POST。
当我将 Json、URL 和承载令牌复制/粘贴到 Postman 中时,它可以完美运行。但是从 C# 执行此操作时,我收到此错误:
“状态代码:400,ReasonPhrase:'错误请求',版本:1.1,内容: System.Net.Http.StreamContent,标头:{ 传输编码:分块 连接:保持活动期望-CT:max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" CF-RAY:4c190ad8ad786539-SYD 日期:2019 年 4 月 3 日星期三 06:38:54 GMT 设置 Cookie:__cfduid=dc0232e99fa0fefc0bd728258229dd5d51554273534; 过期=周四,20 年 4 月 2 日 06:38:54 GMT;路径=/;域=.paymentsapi.io; 仅http;安全服务器:cloudflare X-Powered-By:ASP.NET 内容类型:应用程序/json;字符集=utf-8 }"
谁能看到我做错了什么?
提前致谢。
JsonSerializerSettings jss = new JsonSerializerSettings();
string strValue = JsonConvert.SerializeObject(TestMaster, jss);
lblJSon.Text = strValue; // This Json is valid
ByteArrayContent bytecontent = new ByteArrayContent(System.Text.Encoding.UTF8.GetBytes(strValue));
bytecontent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
string AccessToken = lblToken.Text;
HttpClient tRequest = new HttpClient();
tRequest.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AccessToken);
Task<HttpResponseMessage> getTask = tRequest.PostAsJsonAsync(new Uri(strURL).ToString(), bytecontent);
HttpResponseMessage urlContents = await getTask;
Console.WriteLine("urlContents.ToString");
lblEDDR.Text = urlContents.ToString();
【问题讨论】:
-
可能是因为“System.Text.Encoding.UTF8.GetBytes”,尝试使用System.Convert.FromBase64String
标签: c# json api post bearer-token