2016-04-25 2 views
0

Я использовал Почтальон, чтобы получить данные json от URL-адреса. Результат хороший, и у меня есть массив как строка json. Ниже приведены изображения, которые я захваченные во время использования почтальона, чтобы получить данные:Как имитировать вызов Ajax, как и почтальон?

Header

Body

Я хочу сделать это в Ajax вызова, но не знают, как осуществить это. Это пример того, что я пробовал:

function getDeliveryStatusDetail(qrcode) { 
var url = 'http://thecompany.com/DeliverStatusDetail/DeliverStatusDetail'; 
var data = JSON.stringify({ QRCode: qrcode }); 
$.ajax 
    ({ 
     type: "POST", 
     url: url, 
     dataType: 'jsonp', 
     async: false, 
     data: data, 
     contentType: "application/json; charset=utf-8", 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader('Authorization', 'lgGbkiJ1n2RtjaXLHzvHs7yejzejt+0O4ELj7im8PzYGAOyTO'); 
     }, 
     success: function() { 
      alert('Thanks for your comment!'); 
     }, 
     error: function (xhr, status, error) { 
      alert(xhr.responseText); 
     } 
     }); 
} 

Успешное возвращение JSON выглядеть следующим образом:

{ 
    "QRCode": "KLO00998", 
    "ReceiverAddress": { 
    "FullName": "Elizabeth Jerah" 
    }, 
    "QRCodeDetail": [ 
    { 
     "QRCode": "KLO00998", 
     "Status": "A" 
    }, 
    { 
     "QRCode": "KLO00998", 
     "Status": "T" 
    }, 
    { 
     "QRCode": "KLO00998", 
     "Status": "B" 
    }, 
    { 
     "QRCode": "KLO00998", 
     "Status": "C" 
     "SignatureReturn": "" 
    } 
    ], 
    "code": "100", 
    "desc": "Success", 
    "ErrorMessages": null, 
    "ValidationMessages": null 

    } 

Код выше может имитировать процесс Почтальон, но неудачно. Не могли бы вы помочь мне переформатировать код примера?

+0

почтальон не должен следовать всем политикам происхождения, которые делает ajax. –

+0

Я не уверен, в чем ваш вопрос? вы спрашиваете, как сделать ajax-вызов? –

+0

Позвольте мне добавить пример. –

ответ

4

Наконец-то, у меня появилось новое решение на C#. Событие мой вопрос не относится к C#, но это мое единственное решение для решения этой проблемы.

var httpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://mycompany.com/DeliverStatusDetail/DeliverStatusDetail"); 
      httpWebRequest.ContentType = "application/json"; 
      httpWebRequest.Method = "POST"; 
      httpWebRequest.Headers["Authorization"] = "Alpha lgGbkiJ1n2RtjaXLHzvHs7yejzejt+0O4"; 

      using (var streamWriter = new System.IO.StreamWriter(httpWebRequest.GetRequestStream())) 
      { 
       string json = "{\"QRCode\":\"HS2016000\"}"; 

       streamWriter.Write(json); 
       streamWriter.Flush(); 
       streamWriter.Close(); 
      } 

      var httpResponse = (System.Net.HttpWebResponse)httpWebRequest.GetResponse(); 
      using (var streamReader = new System.IO.StreamReader(httpResponse.GetResponseStream())) 
      { 
       var result = streamReader.ReadToEnd(); 
       Label1.Text = result; 
      } 

Я планировал вызывать ajax на стороне клиента, но получил застрял, как то, что я описал в вопросе. Затем я попробовал это на стороне сервера, установив HttpWebRequest в C# и получив результат после запуска кода на странице ASPx.

+0

Можно ли это сделать на Python? –

+0

Найдено рабочее решение в питона 'импорт URLLIB импорт urllib2 импорт base64 URL = 'http://mycompany.com/DeliverStatusDetail/DeliverStatusDetail' authKey = base64.b64encode ("Alpha: lgGbkiJ1n2RtjaXLHzvHs7yejzejt + 0O4") заголовки = { "Content-Type": "приложения/JSON", "Авторизация": "Базовый" + authKey} данных = { "QRCode": "HS2016000"} запрос = urllib2.Request (URL) запрос .add_data (urllib.urlencode (данные)) для ключа, значение в headers.items(): request.add_header (ключ, значение) Ответ = urllib2.urlopen (запрос) print response.info(). Заголовки print response.read() ' –

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