Отправить post запрос на JSON - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет , использую WebBrowser что бы отправлять пост запросы , и для сайта realty.mail.ru нужно отправить сюда --- http://pro.realty.mail.ru/add/jsonSave/ (так показывай сниффер) , но при попытке из программы передать данные на этот адрес , предлагает скачать файл JSON вот код
Листинг программы
  1. webBrowser1.Navigate("http://pro.realty.mail.ru/addblock/");
  2. String postData = "block_uid=&last_version=&created_at=&payer_id=5006502&bargain_type=sale&type_id=9&client_id=5006691&price_origin=1111111111&currency=RUR&unit_type=total&description=http%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2Fhttp%3A%2F%2Fpro.realty.mail.ru%2Fadd%2FjsonSave%2F%D0%BC&classificators%5Brooms_count%5D%5Bvalue%5D=5&classificators%5Bcommon_area%5D%5Bvalue%5D=66&classificators%5Bkitchen_area%5D%5Bvalue%5D=22&classificators%5Bliving_area%5D%5Bvalue%5D=44&classificators%5Bfloor%5D%5Bvalue%5D=5&classificators%5Bfloors_count%5D%5Bvalue%5D=12&classificators%5Brenovation%5D%5Bvalue_id%5D=0&classificators%5Bflat_type%5D%5Bvalue_id%5D=0&classificators%5Bbathroom_type%5D%5Bvalue_id%5D=0&classificators%5Brooms_area%5D%5Bvalue%5D=&classificators%5Bhouse_type%5D%5Bvalue_id%5D=0&classificators%5Bbuilding_year%5D%5Bvalue%5D=&classificators%5Bname%5D%5Bvalue%5D=&classificators%5Bbuilding_serial%5D%5Bvalue%5D=&classificators%5Bceil_height%5D%5Bvalue%5D=&latitude=53.889947&longitude=27.573334&object_id%5B%5D=1111374&object_id%5B%5D=1111375&geo_relations%5Bsubway%5D%5Bobject_id%5D=0&geo_relations%5Bsubway%5D%5Bvalue%5D=&geo_relations%5Bsubway%5D%5Brelation_type_id%5D=4&raw_address=%D0%B7%D0%B0%D1%81%D0%BB%D0%B0%D0%B2%D1%81%D0%BA%D0%B0%D1%8F+25&company_name=Vlad+Shelepkov&contact_phone-country=1111374&contact_phone=%2B375+(29)+752-86-77&contact_email=crag.hack%40mail.ru&external_url=&is_agreed=1";
  3. byte[] Bytes = Encoding.UTF8.GetBytes(postData);
  4. string AdditionalHeaders = "Content-Type: application/x-www-form-urlencoded" + Environment.NewLine;
  5. webBrowser1.Navigate("http://pro.realty.mail.ru/add/jsonSave/", "", Bytes, AdditionalHeaders);

Решение задачи: «Отправить post запрос на JSON»

textual
Листинг программы
  1. function GetRequest([string] $url, [System.Net.CookieContainer] $cookieContainer, [string] $postParams, [string] $userAgent)
  2. {
  3.         [system.Net.HttpWebRequest] $request = [system.Net.HttpWebRequest]::Create($url)
  4.         $request.CookieContainer = $cookieContainer
  5.         $request.UserAgent = $userAgent
  6.        
  7.         if (![string]::IsNullOrEmpty($postParams))
  8.         {
  9.             $request.Method = "POST"
  10.             $request.ContentType = "application/x-www-form-urlencoded"
  11.             $request.ContentLength = $postParams.Length
  12.             [System.IO.TextWriter] $requestWriter = New-Object System.IO.StreamWriter($request.GetrequestStream())
  13.             $requestWriter.Write($postParams)
  14.             $requestWriter.Close()
  15.             $requestWriter.Dispose();
  16.         }
  17.        
  18.         return [system.Net.HttpWebRequest] $request
  19. }
  20.  
  21. function GetContentFromUrl([System.String] $url, [System.Net.CookieContainer] $cookieContainer, [System.String] $postParams, [string] $userAgent)
  22. {
  23.         try
  24.         {
  25.             $request = GetRequest $url $cookieContainer $postParams $userAgent
  26.             $Response = $request.GetResponse()
  27.  
  28.             [System.IO.TextReader] $contentStream = New-Object System.IO.StreamReader($Response.GetResponseStream())
  29.             $content = [System.Web.HttpUtility]::HtmlDecode($contentStream.ReadToEnd())
  30.             $contentStream.Close()
  31.             $Response.Close()
  32.  
  33.             if($Response.StatusCode -ne 200)
  34.             {
  35.                 throw 'non-200 status code'
  36.             }
  37.        
  38.             if ($content.Contains('Забыли пароль?'))
  39.             {
  40.                 throw 'Неверные логин-пароль'
  41.             }
  42.            
  43.             return $content
  44.         }
  45.         catch [System.Net.WebException]
  46.         {
  47.             try
  48.             {
  49.                 #       Write-Host $Error[0] -foregroundcolor "magenta"
  50.                 $exception = $_.Exception
  51.                 $status = GetStatusDescription( $exception.Status)
  52.                
  53.                 $Error = GetExceptionDetails( $exception)
  54.                 $errorInfo = GetErrorInfo($exception)
  55.                 $errorDescription = GetErrorDescription($exception)
  56.                
  57.                 $responseText = GetFailedResponseText -exception ($exception)
  58.                
  59.                 if($exception.Response -ne $null)
  60.                 {
  61.                     $exception.Response.Close()
  62.                 }
  63.            
  64.                 SetResult -result $false -info $errorInfo -properties (GetAdditionalProperties -pingUrl $url -responseUri $exception.Response.ResponseUri -httpResponseStatusCode ($exception.Response.StatusCode) -errorCode ($ErrorCode.WebError) -errorDescription $errorDescription -responseText ($responseText))            
  65.                 Exit
  66.             }
  67.             catch [System.Exception]
  68.             {
  69.                 [System.String] $resultText = "При получении ответа произошла ошибка :{0} {1} {2} " -f ($status, $exception, $exception.GetType())
  70.                 SetResult -result $false -info $errorInfo -properties (GetAdditionalProperties -pingUrl $url -resultCount 0 -errorDescription $errorDescription -httpResponseStatusCode 0)
  71.                 Exit
  72.             }
  73.         }    
  74. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут