Возможно использование tinyurl.com в приложении .Net?
Я нашел следующий код для создания URL-адреса tinyurl.com:
http://tinyurl.com/api-create.php?url=http://myurl.com
Это автоматически создаст URL-адрес tinyurl. Есть ли способ сделать это с помощью кода, в частности, С# в ASP.NET?
Ответы
Ответ 1
Вероятно, вы должны добавить некоторую проверку ошибок и т.д., но это, вероятно, самый простой способ сделать это:
System.Uri address = new System.Uri("http://tinyurl.com/api-create.php?url=" + YOUR ADDRESS GOES HERE);
System.Net.WebClient client = new System.Net.WebClient();
string tinyUrl = client.DownloadString(address);
Console.WriteLine(tinyUrl);
Ответ 2
После нескольких исследований... Я наткнулся на следующий код:
public static string MakeTinyUrl(string url)
{
try
{
if (url.Length <= 30)
{
return url;
}
if (!url.ToLower().StartsWith("http") && !Url.ToLower().StartsWith("ftp"))
{
url = "http://" + url;
}
var request = WebRequest.Create("http://tinyurl.com/api-create.php?url=" + url);
var res = request.GetResponse();
string text;
using (var reader = new StreamReader(res.GetResponseStream()))
{
text = reader.ReadToEnd();
}
return text;
}
catch (Exception)
{
return url;
}
}
Похоже, это может сделать трюк.
Ответ 3
Имейте в виду, если вы делаете полномасштабное приложение, которое вы подключаете в довольно конкретной зависимости от схемы URL/API TinyURL. Возможно, у них есть гарантии, что их URL не меняется, но стоит проверить
Ответ 4
Вы должны вызывать этот URL из своего кода, а затем читать обратно с сервера и обрабатывать его.
Посмотрите System.Net.WebClient класс, DownloadString (или лучше: DownloadStringAsync), похоже, что вы хотите.
Ответ 5
Согласно этой статье, вы можете реализовать ее следующим образом:
public class TinyUrlController : ControllerBase
{
Dictionary dicShortLohgUrls = new Dictionary();
private readonly IMemoryCache memoryCache;
public TinyUrlController(IMemoryCache memoryCache)
{
this.memoryCache = memoryCache;
}
[HttpGet("short/{url}")]
public string GetShortUrl(string url)
{
using (MD5 md5Hash = MD5.Create())
{
string shortUrl = UrlHelper.GetMd5Hash(md5Hash, url);
shortUrl = shortUrl.Replace('/', '-').Replace('+', '_').Substring(0, 6);
Console.WriteLine("The MD5 hash of " + url + " is: " + shortUrl + ".");
var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(604800));
memoryCache.Set(shortUrl, url, cacheEntryOptions);
return shortUrl;
}
}
[HttpGet("long/{url}")]
public string GetLongUrl(string url)
{
if (memoryCache.TryGetValue(url, out string longUrl))
{
return longUrl;
}
return url;
}
}
Ответ 6
В .NET это очень просто. Мы будем использовать Tiny URL API для создания крошечного URL.
для получения дополнительной информации, пожалуйста, обратитесь к данной ссылке ниже.
http://www.freshcodehub.com/Article/38/convert-url-to-shorten-url-or-tiny-url-in-aspnet-with-c
public static string MakeTinyUrl(string Url)
{
try
{
if (Url.Length <= 12)
{
return Url;
}
if (!Url.ToLower().StartsWith("http") && !Url.ToLower().StartsWith("ftp"))
{
Url = "http://" + Url;
}
var request = WebRequest.Create("Need to put tiny URL API" + Url);
var res = request.GetResponse();
string text;
using (var reader = new StreamReader(res.GetResponseStream()))
{
text = reader.ReadToEnd();
}
return text;
}
catch (Exception)
{
return Url;
}
}
Ответ 7
Вот моя версия реализации:
static void Main()
{
var tinyUrl = MakeTinyUrl("https://stackoverflow.com/info/366115/using-tinyurl-com-in-a-net-application-possible");
Console.WriteLine(tinyUrl);
Console.ReadLine();
}
public static string MakeTinyUrl(string url)
{
string tinyUrl = url;
string api = " the api url goes here ";
try
{
var request = WebRequest.Create(api + url);
var res = request.GetResponse();
using (var reader = new StreamReader(res.GetResponseStream()))
{
tinyUrl = reader.ReadToEnd();
}
}
catch (Exception exp)
{
Console.WriteLine(exp);
}
return tinyUrl;
}