none
用C# windows form 使用 HttpWebRequest HttpWebResponse 來連結API問題 RRS feed

  • 問題

  • 我最近在實作  使用Windows form程式 來連結Xuite的雲端空間
    大致上怎麼連結都懂了  但是要實做到Windows form  C#上的時候出了點問題
    就是他們的API  必須把他們需要的直傳到http://my.xuite.net/service/account/authorize.php上

    (API介紹網站http://api.xuite.net/document/bin/xuite_dev/public/oauth)就像我傳成功的案例

    http://my.xuite.net/service/account/authorize.php?response_type=token&client_id=53806c74d2ec268f1646583148b877e8&redirect_uri=http%3A%2F%2Fweb2.nutc.edu.tw%2F%7Es1499b037%2Faccess_token.html

    一樣  我把值丟給它 就會得到Oauth碼
    但是我使用HttpWebRequest HttpWebResponse方式來連結和接收後得到的卻是<script>location.replace ("https://xuite.net/members/miniLogin.php?index=2&final=http%3A%2F%2Fmy.xuite.net%2Fservice%2Faccount%2Fauthorize.php%3Fresponse_type%3Dtoken%26client_id%3D53806c74d2ec268f1646583148b877e8%26redirect_uri%3Dhttp%253A%252F%252Fweb2.nutc.edu.tw%252F%257Es1499b037%252Faccess_token.html&mobile=1&cssurl=https%3A%2F%2Fimg.xuite.net%2F_v_2.2013.04.29%2Fportal%2Fwww%2Fdefault%2Fstyle.css");</script>

    這段文字碼

    我找了很多方式還是無解  這是我的程式 用visual studio2012做的https://docs.google.com/file/d/0B-VAPAudOL0iRUdESlhUQWJTY3M/edit?usp=sharing

    我主要的程式碼是下面這段

    ----------------------------------------------

            private void button1_Click(object sender, EventArgs e)
            {

                string redirect_uri = "http://web2.nutc.edu.tw/~s1499b037/access_token.html";
                string client_id = "53806c74d2ec268f1646583148b877e8";
                string targetUrl = "http://my.xuite.net/service/account/authorize.php?response_type=token&client_id=" + client_id + "&redirect_uri=" + redirect_uri;
               // string targetUrl = "http://my.xuite.net/service/account/authorize.php?response_type=";
                HttpWebRequest request = HttpWebRequest.Create(targetUrl) as HttpWebRequest;
                request.Method = "GET";
                request.ContentType = "application/x-www-form-urlencoded";
                request.Timeout = 30000;
                string result = "";
                // 取得回應資料
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                    {
                        result = sr.ReadToEnd();
                    }
                }
                textBox1.Text = result;
                textBox2.Text = targetUrl;
            }

    ----------------------------------------------

    就照理說 textBox1.Text 給我的結果應該會是Oauth碼  但他卻給我給我那些文字碼  想請問解決方法  謝謝~~~

    2013年7月30日 下午 01:31

所有回覆

  • 做 OAuth 驗證最好是用 WebBrowser 控制項來做,到最後取得 access token 後再使用 HttpWebRequest/HttpWebResponse 來操作。

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已提議為解答 Alex_Lee 2013年7月31日 上午 12:02
    2013年7月30日 下午 11:42
    版主