2016-04-13 49 views
0

C# webRequest'i kullanmaya yeni başlıyorum ve Apple Online Store'daki (https://secure2.store.apple.com/order/list) siparişlerimi kontrol etmek için POST yöntemini kullanmaya çalışıyorum.HTTP POST yöntemi başarısız oluyor

Tek bir siparişi kontrol etmek istiyorum ve POST Yöntemini Parametrelerle kullanmam gerektiğini buldu: orderLookup-order-number (Sipariş No) ve orderLookup-order-user-info (Apple Hesabı).

POST İÇİN: https://secure1.store.apple.com/us/shop/order/json/single

1. parametre: orderLookup sipariş numarası değeri: [Sipariş No]

2. parametre: orderLookup

Ben tarafından https://www.hurl.it/ üzerinde https://secure1.store.apple.com/us/shop/order/json/single bu 2 parametre göndermek için çalıştık -order-user-info değeri: [Apple ID]

ve başarıyla geri döndü. Ancak C# 'da yaptığımda başarısız olurum. Hatalarımı işaret eden var mı lütfen? Benim işlevim aşağıdaki gibidir. Ben HttpWebResponse almak istediğinde

bool TryPostMethodToGetHtmlText(string orderNo, string accountNo, out string htmlText) 
{ 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://secure1.store.apple.com/us/shop/order/json/single"); 
    request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"; 
    request.Method = "POST"; 
    request.ContentType = "application/x-www-form-urlencoded"; 
    var postData = "orderLookup-order-number=" + orderNo; 
     postData += "&orderLookup-order-user-info="; 
     postData += HttpUtility.UrlEncode(accountNo); 
    byte[] postBytes = Encoding.ASCII.GetBytes(postData); 
    request.ContentLength = postBytes.Length; 
    using (Stream st = request.GetRequestStream()) 
    { 
     st.Write(postBytes, 0, postBytes.Length); 
    } 

    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    if (response.StatusCode == HttpStatusCode.OK) 
    { 
     Stream receiveStream = response.GetResponseStream(); 
     StreamReader readStream = null; 

     if (response.CharacterSet == null) 
     { 
      readStream = new StreamReader(receiveStream); 
     } 
     else 
     { 
      readStream = new StreamReader(receiveStream, Encoding.GetEncoding(65001)); 
     } 
     htmlText = readStream.ReadToEnd(); 
     response.Close(); 
     readStream.Close(); 
     return true; 
    } 
    htmlText = string.Empty; 
    return false; 
} 

Ben 503 hata var. Teşekkür ederim.

+0

503, servisin kullanılmadığı yanıtı belirtir. – gypsyCoder

+0

@gypsyCoder Cevabınız için teşekkür ederiz, ancak POST Yöntemi – user

+0

için herhangi bir parametre iletmediğimde yanıt alabiliyorum En iyi tahmin kimlik doğrulamasıdır. Web adresi kimlik doğrulaması yapılmadığından sunucu size verilere erişemez. Kimlik doğrulamanın nasıl yapıldığına dair api'yi kontrol edin. (istekte + auth çerezi? auth başlığı istekte bulunur mu?) –

cevap

0

Bu çözüm çalışıyor.

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://secure1.store.apple.com/us/shop/order/json/single"); 

     request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"; 
     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 

     var postData = "orderLookup-order-number=" + orderNo; 
     postData += "&orderLookup-order-user-info="; 
     postData += HttpUtility.UrlEncode(accountNo); 


     try 
     { 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      if (response.StatusCode == HttpStatusCode.OK) 
      { 
       Stream receiveStream = response.GetResponseStream(); 
       StreamReader readStream = null; 

       if (response.CharacterSet == null) 
       { 
        readStream = new StreamReader(receiveStream); 
       } 
       else 
       { 
        readStream = new StreamReader(receiveStream, Encoding.GetEncoding(65001)); 
       } 
       htmlText = readStream.ReadToEnd(); 
       response.Close(); 
       readStream.Close(); 
      } 
      htmlText = string.Empty; 
     } 
     catch (WebException e) 
     { 
      htmlText = string.Empty; 
     } 

     HttpWebRequest requestForStream = (HttpWebRequest)WebRequest.Create("https://secure1.store.apple.com/us/shop/order/json/single"); 
     requestForStream.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"; 
     requestForStream.Method = "POST"; 
     requestForStream.ContentType = "application/x-www-form-urlencoded"; 

     byte[] postBytes = Encoding.ASCII.GetBytes(postData); 
     requestForStream.ContentLength = postBytes.Length; 
     using (Stream st = requestForStream.GetRequestStream()) 
     { 
      st.Write(postBytes, 0, postBytes.Length); 
     } 
+0

Üzgünüz, çözümünüzün nasıl çalıştığını bilmiyorum, lütfen açıklayabilir misiniz? Teşekkürler – user