我在Nuget包Bitly.Net上遇到了问题,所以我实现了上面@devfunkd的解决方案。但是我在Azure see this related link上仍然遇到了同样的问题,所以我不得不开发一个稍微不同的解决方案。 我的解决方案使用fixed OAuth Token进行身份验证,正如bit.ly支持所建议的那样。它在Azure上工作,并且具有不像旧的'login'/'apiKey'那样贬值的优点。如果这对某人有用,这里是代码,基于@devfunkd,但更新为:
public async Task<string> ShortenAsync(string longUrl)
{
//with thanks to @devfunkd - see https://stackoverflow.com/questions/31487902/nuget-package-for-bitly-to-shorten-the-links
var url = string.Format("https://api-ssl.bitly.com/v3/shorten?access_token={0}&longUrl={1}",
_bitlyToken, HttpUtility.UrlEncode(longUrl));
var request = (HttpWebRequest) WebRequest.Create(url);
try
{
var response = await request.GetResponseAsync();
using (var responseStream = response.GetResponseStream())
{
var reader = new StreamReader(responseStream, Encoding.UTF8);
var jsonResponse = JObject.Parse(await reader.ReadToEndAsync());
var statusCode = jsonResponse["status_code"].Value<int>();
if (statusCode == (int) HttpStatusCode.OK)
return jsonResponse["data"]["url"].Value<string>();
//else some sort of problem
_logger.ErrorFormat("Bitly request returned error code {0}, status text '{1}' on longUrl = {2}",
statusCode, jsonResponse["status_txt"].Value<string>(), longUrl);
//What to do if it goes wrong? I return the original long url
return longUrl;
}
}
catch (WebException ex)
{
var errorResponse = ex.Response;
using (var responseStream = errorResponse.GetResponseStream())
{
var reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
var errorText = reader.ReadToEnd();
// log errorText
_logger.ErrorFormat("Bitly access threw an exception {0} on url {1}. Content = {2}", ex.Message, url, errorText);
}
//What to do if it goes wrong? I return the original long url
return longUrl;
}
}
6条答案
按热度按时间e0bqpujr1#
查看https://www.nuget.org/packages/BitlyAPI/或者自己调用bit.lyAPI。该api非常易于使用和工作。
您可以从www.example.com获取您的登录名和apikeybit.ly,访问此链接https://bitly.com/a/your_api_key
ulydmbyx2#
我在Nuget包Bitly.Net上遇到了问题,所以我实现了上面@devfunkd的解决方案。但是我在Azure see this related link上仍然遇到了同样的问题,所以我不得不开发一个稍微不同的解决方案。
我的解决方案使用fixed OAuth Token进行身份验证,正如bit.ly支持所建议的那样。它在Azure上工作,并且具有不像旧的'login'/'apiKey'那样贬值的优点。如果这对某人有用,这里是代码,基于@devfunkd,但更新为:
请注意,在代码中,字段
_bitlyToken
应该包含通过转到this page创建的令牌。_logger
变量保存某种类型的日志记录器,以便不会丢失错误。我希望这对某人有帮助。
zpqajqem3#
其他答案都很棒,但示例代码将不再工作https://www.nuget.org/packages/BitlyAPI/4.0.0已更新,因此您可以使用它或在github https://github.com/doublej42/BitlyAPI中查看它的代码
jaxagkaj4#
这个是用V4的
sqserrrh5#
下面的例子使用了bit.lyAPI v4:
所需的第三方软件包:Newtonsoft.json,RestSharp。我还用它做了一个GitHub项目,看这里:https://github.com/jabbalaci/CsUrlShortener。
eiee3dmh6#
此示例仅使用Microsoft .net本机代码。您不需要任何其他第三方软件包,如Newtonsoft.Json或RestSharp:
请求模型:
响应模型:
你可以这样使用它:
你可以找到所有的示例代码here