无效的URI:URI方案无效

9
我正在尝试通过 WebRequest 登录网站。但是在这一点上我遇到了异常:
WebRequest req = WebRequest.Create(formUrl.Trim());

string url,string username,string password 来自一个文本框。这是完整的代码:

public void LoginToUrl(string url,string username, string password )
{
    formUrl = url;
    formParams = string.Format("username={0}&password={1}", username,password);                  

    WebRequest req = WebRequest.Create(formUrl.Trim());//
    req.ContentType = "application/x-www-form-urlencoded";
    req.Method = "POST";
      bytes = Encoding.ASCII.GetBytes(formParams);
    req.ContentLength = bytes.Length;
    using (Stream os = req.GetRequestStream())
    {
        os.Write(bytes, 0, bytes.Length);
    }
    WebResponse resp = req.GetResponse();
    cookieHeader = resp.Headers["Set-cookie"];
}

这是POST数据:
Host=internetlogin1.cu.edu.ng

User-Agent=Mozilla/5.0 (Windows NT 10.0; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0

Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language=en-US,en;q=0.5

Accept-Encoding=gzip, deflate

请参考此链接
Connection=keep-alive

Content-Type=application/x-www-form-urlencoded

Content-Length=49
POSTDATA=dst=&popup=true&username=13ck015373&password=F3NB

8
那么,这个URL长什么样子? - Christoph K
https://internetlogin1.cu.edu.ng/login 这个链接只能通过我的学校内部网络访问。 - simdi ejinkeonye
1
在浏览器中按 F12 并使用调试器来检查正在发布的内容。将这一点添加到你的问题中。 - Nick.McDermaid
显然那不是完整的URL,因为你正在添加参数。 - Nick.McDermaid
4个回答

15

这是表单:https://imageshack.com/i/plrZ2PWvp,这是错误信息:https://imageshack.com/i/pnxf7Omjp。 - simdi ejinkeonye
根据错误图像,您在将文本框值传递给LoginToUrl函数时出现了错误。假设URL文本框是txtUrl,则应使用txtUrl.Text引用在表单中输入的值。 - Talebian
@simdiejinkeonye Talebian是正确的。我们在错误图像中看到的问题在于对LoginToUrl的调用。您正在将TextBoxes作为参数传递,而不是每个TextBox.Text。 - Pikoh

2

我也遇到了模式URI无效的问题。为了解决这个问题,我必须执行以下操作。不确定原因,但提供给您参考。

有效:

Uri serverUri = new Uri("http://url.com/sub/somethingService");
var webRequest = (HttpWebRequest)WebRequest.Create(serverUri);

什么没有起作用(出现了相同的错误):

var webRequest = (HttpWebRequest)WebRequest.Create("http://url.com/sub/somethingService");

1
如果有url字符串的参数,那么需要通过“?”和“&”字符来添加它们。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接