2016-04-13 30 views
0

私はC#でWebRequestを使用するための初心者です.Postメソッドを使用してApple Online Store(https://secure2.store.apple.com/order/list)で注文を確認しようとしています。HTTP POSTメソッドが失敗する

私は1つの注文をチェックしたいと思って、パラメータ:orderLookup-order-number(注文番号)とorderLookup-order-user-info(私のAppleアカウント)を使ってPOSTメソッドを使うべきであることがわかりました。

POST TO:https://secure1.store.apple.com/us/shop/order/json/single

パラメーター1:orderLookup次数の値:[注文番号]

パラメーター2:orderLookup

は私がでhttps://www.hurl.it/https://secure1.store.apple.com/us/shop/order/json/singleにこれら2つのパラメータを投稿しようとしています-order-user-info値:[Apple ID]

正常に返されました。しかし、私はC#でそれを行うと、私は失敗します。誰でも私の間違いを指摘できますか?私の機能は以下の通りです。

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; 
} 

私はHttpWebResponseを取得したいときに503エラーが発生しました。ありがとうございました。

+0

503は、サービスが利用できないという応答を示します。 – gypsyCoder

+0

@gypsyCoder返信いただきありがとうございますが、POSTメソッドのパラメータを渡さないと応答が得られます – user

+0

最高の推測は認証です。 Webリクエストは認証されていないため、サーバーはデータへのアクセス権を与えません。認証方法をapiで確認してください。 –

答えて

0

この解決策は機能しています。

 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

申し訳ありませんが、あなたのソリューションの仕組みが分かりません。説明してください。ありがとう – user

関連する問題