문제

나는 와 같은 JSON 데이터 스트림을 읽으려고합니다.

string Username = "username";
string Password = "password";

string BaseUrl = "url";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(BaseUrl);
request.Credentials = new NetworkCredential(Username, Password);
request.ContentType = "application/json; charset=utf-8";
request.Headers["Authorization"] = "Basic " + authInfo;

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    if (response.StatusCode != HttpStatusCode.OK) throw new Exception(string.Format("Server returned {0}\n {1}", response.StatusCode, response.ToString()));
    // Cheat and always expect utf-8
    string result = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8).ReadToEnd();

    richTextBox1.Text = result;
.

이 옵션이 사용자 이름과 암호를 문자열로 전달하여 인증을 얻는 기본 방법이지만 다음 오류가 발생합니다 -

원격 서버가 오류를 반환했습니다. (406) 허용되지 않습니다.

어떻게이 작업을 수행 할 수 있습니까?

도움이 되었습니까?

해결책

NetworkCredDentials에서 수행하는 대신 헤더 인증을 시도합니다.

public void SetBasicAuthHeader(WebRequest req, String userName, String userPassword)
{
  string authInfo = userName + ":" + userPassword;
  authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
  req.Headers["Authorization"] = "Basic " + authInfo;
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top