2

这是我第一次尝试创建一个console app可以发出HTTP GET请求并将响应打印到console.

到目前为止,该代码有效,但仅适用于URIs不需要username/password.

我的最终目的是使用一个cloud/hosting API接受HTTP GET请求的触发器作为采取某些行动的触发器。因此,我必须为此使用 a username/password

using System;
using System.Net;
using System.IO;

namespace HttpTestProject {

    class Program {

        static void Main(string[] args) {

            Uri uri = new Uri("http://www.google.com");
            string username = "asdf";
            string password = "asdf";

            NetworkCredential cred = new NetworkCredential(username, password);
            CredentialCache cache = new CredentialCache();
            cache.Add(uri, "Basic", cred);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream resStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(resStream);
            string text = reader.ReadToEnd();

            Console.WriteLine(text);
            Console.ReadLine();

        }

    }

}
4

1 回答 1

11

如果您必须在不等待质询的情况下向您的请求添加基本身份验证,您可以手动附加标头:

var request = WebRequest.Create("http://myserver.com/service");
string authInfo = userName + ":" + userPassword;
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));

//like this:
request.Headers["Authorization"] = "Basic " + authInfo;

var response = request.GetResponse();
于 2013-01-10T15:22:54.803 回答