Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用tinyurl API获取缩短的URL时出错_C#_Asp.net Mvc - Fatal编程技术网

C# 使用tinyurl API获取缩短的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

我正在尝试使用TinyUrl制作一个URL缩短器。问题是我得到了以下错误:

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+,页面会显示缩短的url
WebRequest.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谢谢!真的,谢谢你!这就是我需要的答案,谢谢!非常感谢。真的,谢谢你!这就是我需要的答案,谢谢!