2011-01-18 3 views
4

Я пытаюсь отправить службу XML в службу REST. Вот код, который я использую:HTTP 401 Ошибка при отправке 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()); 
} 

ответ

0

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

+0

Спасибо Даррел. Вот что я получаю от скрипача: нет заголовка прокси-аутентификации. Нет заголовка WWW-Authenticate. –

+0

Ничего себе, что сосет. Спецификация HTTP говорит, что 401 всегда должен сопровождаться заголовком WWW-Authenticate. Что такое технология вашего сервера? –

+0

Я работаю над Windows Server 2008 R2. Вот статья, которую я назвал, которая, наконец, работала на http://msdn.microsoft.com/en-us/library/debx8sh9.aspx. Все еще имеют те же проблемы с использованием WebClient и примера выше. –

0

Пара вещей, чтобы попробовать:

  • изменить тип содержимого, как вы не сможете разместить JSON к нему
  • Не кодировать данные, как его ожидающей XML, а не бинарный поток

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

+0

Спасибо за ответ. Изменен ContentType на «application/xml», все тот же результат. –

0

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

request.Credentials = new NetworkCredential(username, password); 
Смежные вопросы