Ошибка HTTP 401 при публикации XML в REST - PullRequest
4 голосов
/ 18 января 2011

Я пытаюсь отправить XML в службу REST.Вот код, который я использую:

Я получаю следующую ошибку при вызове службы.

Удаленный сервер возвратил ошибку: (401) Несанкционированный.* Я также пытался установить NetworkCredentials напрямую, т.е.

NetworkCredential nc = new NetworkCredential(username, password);
serviceRequest.Credentials = nc;

Спасибо за вашу помощь.

Uri address = new Uri("https://localhost:30000/restservice/");

// Create the web request  
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;

// Set type to POST  
request.Method = "POST";
request.ContentType = "application/json";

string data = @"<Sample XML Here>";

// Create a byte array of the data we want to send  
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data);

// Set the content length in the request headers  
request.ContentLength = byteData.Length;

// Write data  
using (Stream postStream = request.GetRequestStream())
{
    postStream.Write(byteData, 0, byteData.Length);
}

string usernamePassword = username + ":" + password;

CredentialCache mycache = new CredentialCache();

mycache.Add(address, "Basic", new NetworkCredential(username, password));
request.Credentials = mycache;

// Get response  
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    // Get the response stream  
    StreamReader reader = new StreamReader(response.GetResponseStream());

    // Console application output  
    Response.Write(reader.ReadToEnd());
}

Ответы [ 3 ]

0 голосов
/ 18 января 2011

Используйте Fiddler и посмотрите заголовок WWW-Authenticate, который возвращается с сервера.Это скажет вам, какую схему аутентификации поддерживает сервер.

0 голосов
/ 21 августа 2013

попробуйте установить учетные данные в запросе, как это

request.Credentials = new NetworkCredential(username, password);
0 голосов
/ 18 января 2011

Несколько вещей, чтобы попробовать:

  • Измените тип контента, поскольку вы не публикуете в него json
  • Не кодируйте данные как ожидаемый XML, а не двоичный поток

Надеюсь, это поможет.

...