2015-06-03 5 views
0

У меня проблема с сообщением JSON с аутентификацией/авторизацией .. Ниже мой код .. противник сказал, что они не получили заголовок ... и я понятия не имею, почему ...C# Сообщение JSON с заголовком аутентификации

ASCIIEncoding encoding = new ASCIIEncoding(); 
byte[] data = encoding.GetBytes(stringData); 

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(serverURL); 
req.Method   = "POST"; 
req.ContentType = "application/json"; 
req.ContentLength = data.Length; 
req.Headers.Add("Authentication", merchantID); 
req.Headers["Authentication"] = merchantID; 

Stream newStream = req.GetRequestStream(); 
newStream.Write(data, 0, data.Length); 
newStream.Close(); 

HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 
string returnString = response.StatusCode.ToString(); 

ответ

0

я пишу некоторый пример кода, чтобы прикрепить заголовок в то время как вы называете службу ... надеюсь, что это потребу ...

ASCIIEncoding кодирования = новый ASCIIEncoding(); byte [] data = encoding.GetBytes (stringData);

 HttpWebRequest reqest = (HttpWebRequest)WebRequest.Create(serviceUri); 
     reqest.Headers.Add(LoginName,LoginName); 
     reqest.Headers.Add(AuthenticationKey,AuthenticationKey); 
     reqest.Headers.Add(SessionKey,SessionKey); 
     reqest.ContentType = "application/json"; 

    Stream newStream = req.GetRequestStream(); 
    newStream.Write(data, 0, data.Length); 
    newStream.Close(); 

    HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 
    string returnString = response.StatusCode.ToString(); 
+0

'Add (LoginName, LoginName)', 'Добавить (AuthenticationKey, AuthenticationKey)' etc выглядит неправильно. Пропущено имя enum? –

+0

да .. первый параметр - имя перечисления, подобное этому ... –

+0

EnumCollection.ServiceRequestHeader.AuthenticationKey.ToString(), –

0

Я не могу сказать, где проблема. Это может быть даже на стороне сервера. Недавно я работал над проектом с аутентификацией заголовка, и я заметил интересную вещь. Мой PHP-сервер получил эти заголовки с префиксом «HTTP_».

Другими словами, я делал запрос, как:

req.Headers.Add("Authentication", merchantID); 

И получил его на сервере так:

echo $_SERVER['HTTP_Authentication']; 

Я потратил кучу времени, чтобы найти его. Вы, действительно, можете спросить своего оппонента, есть ли какой-либо подобный заголовок или попросить его лучше изучить ваши запросы и дать вам отзыв.

Также, попробуйте использовать WebClient. Может быть, это поможет.
Кроме того, это намного удобнее.

string data = "{\"a\": \"b\"}"; 

WebClient client = new WebClient(); 

client.Headers.Add("Content-Type", "application/json"); 
client.Headers.Add("Authentication", merchantID); 

var result = client.UploadString(serverURL, "POST", data); 
Смежные вопросы