C# 使用tinyurl API获取缩短的URL时出错
我正在尝试使用TinyUrl制作一个URL缩短器。问题是我得到了以下错误:C# 使用tinyurl API获取缩短的URL时出错,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试使用TinyUrl制作一个URL缩短器。问题是我得到了以下错误: System.Net.WebException: 'Error on the remote server: (400) Incorrect request. 我已经尝试了阅读几乎整个网站,但我没有找到解决办法 控制器代码为: namespace Prueba.Controllers { [HandleError] public class TinyURLAPIController : Controlle
System.Net.WebException: 'Error on the remote server: (400) Incorrect request.
我已经尝试了阅读几乎整个网站,但我没有找到解决办法
控制器代码为:
namespace Prueba.Controllers
{
[HandleError]
public class TinyURLAPIController : Controller
{
// GET: TinyURLAPI
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View("Index");
}
[HttpPost]
public ActionResult MakeTinyUrl(string strURL)
{
var tinyUrl = WebRequest.Create("http: / tinyurl . com/api-create.php?url=" + strURL);
var shortUrl = tinyUrl.GetResponse();
using (var reader = new StreamReader(shortUrl.GetResponseStream())){
ViewData["tinyUrl"] = reader.ReadToEnd();
}
return PartialView("Index");
}
}
}
这是索引代码:
<Html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<@Ajax.BeginForm("MakeTinyUrl", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "tinyUrl" }))>
@Html.TextBox("url")
<input id="btnMakeUrl" type="submit" value="Make tinyUrl" onclick="Index" />
</body>
</Html>
指数
@文本框(“url”)
我需要在文本框中输入长URL,然后按下按钮在标签中显示短URL在将值传递给视图之前,您可能需要对该值进行URL编码:
在将值传递给视图之前,可能需要对其进行URL编码:
无法发表评论,因此我将写下它作为答案 你的问题不是api请求。 您的strURL可能为空,就像我使用您的代码时一样。
尝试在视图中进行以下更改:
from
@Html.TextBox("url")
to
@Html.TextBox("strURL")
而且html在定义表单的地方也不太有效。
尝试:
@使用(Ajax.BeginForm(“MakeTinyUrl”,新的AjaxOptions{HttpMethod=“Post”,UpdateTargetId=“tinyUrl”}))
{
@Html.TextBox(“strURL”)
}
无法发表评论,所以我只写它作为答案
你的问题不是api请求。
您的strURL可能为空,就像我使用您的代码时一样。尝试在视图中进行以下更改:
from
@Html.TextBox("url")
to
@Html.TextBox("strURL")
而且html在定义表单的地方也不太有效。
尝试:
@使用(Ajax.BeginForm(“MakeTinyUrl”,新的AjaxOptions{HttpMethod=“Post”,UpdateTargetId=“tinyUrl”}))
{
@Html.TextBox(“strURL”)
}
我知道由于受到限制,您更改了帖子中的api链接
首先,我会使用您试图缩短的URL在您首选的浏览器中手动调用api…确保这是正确的
e、 g.[redacted]tinyurl.com/api create.php?url=http://www.yoururltest.com
接下来,使用断点运行一个测试,单步执行代码以查看错误发生的确切位置,并查看控制器在请求中接收和使用的数据
我打赌你会在这条路上的某个地方发现一个问题据我所知,由于受到限制,你在文章中修改了api链接 首先,我会使用您试图缩短的URL在您首选的浏览器中手动调用api…确保这是正确的 e、 g.
[redacted]tinyurl.com/api create.php?url=http://www.yoururltest.com
接下来,使用断点运行一个测试,单步执行代码以查看错误发生的确切位置,并查看控制器在请求中接收和使用的数据
我打赌你会在这条路上的某个地方发现一个问题
WebRequest.Create(“laapi de tiny=“+strURL”)代码>似乎根本不正确。您应该以https://example.com
。您应该能够在ActionResult
上设置断点,并查看具体出了什么问题。我确信问题在于您输入的URL无效。有关有效示例,请参阅。正如我怀疑的那样,由于laapi de tiny=
连接到开头,您的URI几乎肯定是无效的。删除该文本。“la api de tiny”是在我的代码中实现的一个真正的api,但我不能在本文中引入链接。然后需要调试。查看API+strURL
的值,确保它是有效的URI。是的,是有效的URI,因为如果我在导航栏中写入API+,页面会显示缩短的urlWebRequest.Create(“la-API de-tiny=“+strURL”)代码>似乎根本不正确。您应该以https://example.com
。您应该能够在ActionResult
上设置断点,并查看具体出了什么问题。我确信问题在于您输入的URL无效。有关有效示例,请参阅。正如我怀疑的那样,由于laapi de tiny=
连接到开头,您的URI几乎肯定是无效的。删除该文本。“la api de tiny”是在我的代码中实现的一个真正的api,但我不能在本文中引入链接。然后需要调试。查看API+strURL
的值,确保它是有效的URI。是的,是有效的URI,因为如果我在导航栏中写入API+,页面会显示缩短的URL谢谢!真的,谢谢你!这就是我需要的答案,谢谢!非常感谢。真的,谢谢你!这就是我需要的答案,谢谢!