2013-11-19 3 views
-2

При вызове того же метода на google chrome postman после входа в систему, я получаю объект json, как показано ниже. enter image description hereHTTP POST дает несанкционированный отказ 401

но когда я пытаюсь получить тот же результат json в codebehind (C#). Я получаю исключение Unauthorized 401.

Я использую свой код следующим образом.

using (var clientSideTab = new WebClient()) 
     { 

      var valSideTab = new System.Collections.Specialized.NameValueCollection { { "username", UserID }, { "Password", strPassword } }; 
      string UpldDataSideTab = "https://resapistage.namechanged.com/v3/secure/Login.aspx?userId=" + UserID + "&passwd=" + strPassword + " ";             

      SystemComponentWrapper SPPostWrapper = new SystemComponentWrapper(); 
      SystemComponentData request = new SystemComponentData(); 
      SystemComponentaddressId addressId = new SystemComponentaddressId(); 

      addressId.type = "AddressId"; 
      addressId.id = 19863; 
      addressId.serial = ""; 

      request.addressId = addressId; 
      request.compId = null; 
      request.getCompParams = true; 
      request.filterForAddress = false; 

      SPPostWrapper.request = request; 

      var postJson = JsonConvert.SerializeObject(SPPostWrapper); 
      Encoding encoding = new UTF8Encoding(); 
      string postData = postJson.ToString(); 
      byte[] bdata = encoding.GetBytes(postData); 


      string URI = "https://resapistage.namechanged.com/v3/api/secure/json/AddressInfo.svc/getSystemComponentsV2"; 
      clientSideTab.UploadValues(UpldDataSideTab, "POST", valSideTab); 


      clientSideTab.Headers.Add("Content-Type","application/json; charset=utf-8"); 
      clientSideTab.Headers.Add("Accept","application/json");     
      clientSideTab.UploadString(URI,"POST", postData); 
      //clientSideTab.UploadData(URI, "POST", bdata); 

      String jsonresponse = "failed"; 


      Label1.Text = jsonresponse; 

     } 

Я получаю эту ошибку каждый раз. пожалуйста помогите. error

+0

Требуется ли проверка подлинности сайта? Вы выполняете аутентификацию при вызове хром? С вызовом C# вы отправляете свои файлы cookie, которые показывают, что вы прошли проверку подлинности? –

+0

Как отправить cookie в webclient вместе с данными json, чтобы получить ответ json? –

+0

Поиск в google привел меня к этому вопросу о переполнении стека: http://stackoverflow.com/questions/13275042/add-cookie-to-webclient –

ответ

1

использование подобный.

  string cookie = strCookie[0]; // fetch your cookie after logging in 
      clientSideTab.Headers.Add("Content-Type","application/json; charset=utf-8"); 
      clientSideTab.Headers.Add("Accept","application/json"); 
      clientSideTab.m_container.SetCookies(URI, cookie); 
      //clientSideTab.Headers.Add(HttpRequestHeader.Cookie, cookie); 
      String resultJSON = clientSideTab.UploadString(URI,"POST", jsonData); 

Это сработало для меня. Надеюсь, что это поможет вам.

+0

Yup, я уже реализовал это после многого поиска в google. в любом случае, спасибо за ваши усилия. –

Смежные вопросы