【发布时间】:2021-10-04 02:07:17
【问题描述】:
所以我想调用 Bitly API 来缩短 URL,我可以使用 POSTMAN 和 Jquery 获得响应,但无法使用 C# 获得响应。
工作 Jquery 代码:
<script type="text/javascript">
$(function () {
$(".createBitly").on("click", function (e) {
e.preventDefault();
var url = "https://stackoverflow.com/questions/ask";
var accessToken = "550ea49c78208978cbeb85ef24XXXX49874cc097";
var params = {
"long_url": url
};
$.ajax({
url: "https://api-ssl.bitly.com/v4/shorten",
cache: false,
dataType: "json",
method: "POST",
contentType: "application/json",
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Bearer " + accessToken);
},
data: JSON.stringify(params)
}).done(function (data) {
console.log(data);
}).fail(function (data) {
console.log(data);
});
});
});
</script>
我正在尝试但无法使用 C# 实现的 C# 代码:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "550ea49c78208978cbeb85ef24XXXX49874cc097");
var content = new
{
long_url = "https://stackoverflow.com/questions/ask"
};
var model = JsonConvert.SerializeObject(content);
//HTTP POST
var postTask = client.PostAsJsonAsync("https://api-ssl.bitly.com/v4/shorten", model);
postTask.Wait();
var result = postTask.Result;
}
现在得到响应成功,但没有得到真正想要的数据。
我想要像进入邮递员一样的回应
如何使用 C# 实现这一点任何帮助将不胜感激。提前致谢
【问题讨论】:
-
“但无法实现” - 你能详细说明一下吗?究竟是什么问题?你收到任何错误信息吗? (附注:最好使用
awaitthant.Result) -
在我看来
PostAsJsonAsync已经序列化了内容。所以尝试传递content而不是序列化的model -
另外,您可以考虑一遍又一遍地注入一个新的 HttpClient 而不是
using。 “HttpClient 旨在被实例化一次并在应用程序的整个生命周期中重复使用。” - Remarks in Docs
标签: c# asp.net asp.net-mvc api asp.net-web-api