Shopify - 在webrequest期间401错误

时间:2016-05-04 13:18:21

标签: c# asp.net .net shopify

我在网页请求期间遇到一些严重的问题,以便从我的应用程序获取订单列表,而我可以直接点击浏览器。

这是代码:



    private const string APIKey = "[DELETED]";
        private const string APIPassword = "[DELETED]";
        private const string APISecrateKey = "[DELETED]";
        private const string StoreName = "epronto-2";
        private const string OrderURL = "https://" + APIKey + ":" + APIPassword + "@" + StoreName + ".myshopify.com/admin/orders.json";
        public string gethttpResponse(){
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "GET";
            req.ContentType = "application/json";
            req.Headers.Add("X-Shopify-Access-Token", APISecrateKey);
            string text = string.Empty;
            try{
                var response = (HttpWebResponse)req.GetResponse();
                using (var sr = new StreamReader(response.GetResponseStream()))
                {
                    text = sr.ReadToEnd();
                }
            }
            catch{}
            return text;
        }

你能告诉我这里缺少什么。

我尝试了什么:

实际上,我从私有应用程序获取数据,我阅读了很多文章,发现通过OAuth API不需要永久access_token,

所以我补充道 req.Headers.Add(“X-Shopify-Access-Token”,APISecrateKey); 这一行,但我无法为我工作。

1 个答案:

答案 0 :(得分:2)

尝试添加req.credentials(apikey,apipassword);

我遇到了同样的问题,但尝试了各种方法,无意中在我的代码中都有效。我认为这条线是多余的,无法弄清楚为什么我的代码坏了,直到我看到你的帖子并尝试将其添加回去。

我的代码现在是“

 WebRequest OrderRequest = WebRequest.Create("<url like you build>");
   OrderRequest.Credentials = new NetworkCredential"APIKEY", "APIpassword");
   response = (HttpWebResponse)OrderRequest.GetResponse();

经过一些测试,我改变了你的代码,这是有效的:

 public static string gethttpResponse(Uri url)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "GET";
            req.ContentType = "application/json";
            //req.Headers.Add("X-Shopify-Access-Token", APISecrateKey);
            req.Credentials = new NetworkCredential(APIKey, APIPassword);
            string text = string.Empty;
            try
            {
                var response = (HttpWebResponse)req.GetResponse();
                using (var sr = new StreamReader(response.GetResponseStream()))
                {
                    text = sr.ReadToEnd();
                }
            }
            catch (Exception a)
            {
                Utility.LogMessage(a.ToString());
            }
            return text;
        }