2014-04-15 80 views
0

我正在尝试发送http请求以请求REST服务。但是,我不断收到401错误。我在http头中包含了一个基本的授权信息,但它仍然收到了相同的401错误。任何人都可以帮我检查一下我的代码吗?由于向REST服务发送请求时出现C#401错误

public void getAuth(string reqUrl) 
    { 
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(reqUrl); 
     string userinfo = "test:test"; 
     byte[] byteUserInfo = Encoding.ASCII.GetBytes(userinfo); 
     string code = Convert.ToBase64String(byteUserInfo); 
     req.Headers.Add("Authorization", "Basic " + code); 
     req.Method = "get"; 
     req.ContentType = "application/x-www-form-urlencoded"; 
     req.Credentials = CredentialCache.DefaultCredentials; 
     HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 
     Console.WriteLine(response); 
    } 

    static void Main(string[] args) 
    { 
     Tester2 test = new Tester2(); 
     test.getAuth("http://MyHost/wiki/rest/prototype/1/search/site?query=property"); 
    } 

回答

0

尝试增加两行:

req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10"; 
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,* /*;q=0.8"; 
+0

嗨lgoy,感谢您的回答。我试过了,它返回了一个400错误(错误的请求)。我检查了相关REST服务的开发人员手册,它提到了“使用包含'基本用户名:密码'的HTTP基本认证(授权HTTP头部),但是请注意,用户名:密码必须是base64编码的,URL还必须包含'os_authType =基本'查询参数“。我认为401错误的发生可能是因为我没有在我的URL中插入'os_authType = basic'。但是,他们没有提供关于在哪里插入此参数的进一步说明。 – Sid

相关问题