简体   繁体   中英

getting 403 error in release version and work fine in debug version

I working in project that connect to appannie.com API and get result and it is working fine in debug but when I publish it and try to test it I get this page : 在此处输入图片说明

and here is the code used for this page in C#:

protected void Button1_Click(object sender, EventArgs e)
        {

            string url = "https://api.appannie.com/v1/accounts?page_index=0";
            string id="",temp="";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.UseDefaultCredentials = true;
            request.Proxy = WebProxy.GetDefaultProxy();
            request.Credentials = new NetworkCredential("username", "password");
            request.ContentType = "Accept: application/xml";
            request.Proxy.Credentials = CredentialCache.DefaultCredentials;
            request.Referer = "http://stackoverflow.com";
            request.Headers.Add("Authorization", "bearer **************");
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            if (response.StatusCode == HttpStatusCode.OK)
            {
                Stream receiveStream = response.GetResponseStream();

                // Pipes the stream to a higher level stream reader with the required encoding format.
                StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
                temp = readStream.ReadToEnd();

                //TextArea1.InnerText = temp + "\n";
                string[] id_arr = temp.Split(',');
                int count = 0;
                while (count != id_arr.Length)
                {

                    if (id_arr[count].Contains("account_id"))
                    {
                        id = id_arr[count];
                        count = id_arr.Length;
                        break;
                    }

                    count++;
                }
                id = id.Substring(id.IndexOf("account_id") + 13);
                //TextArea1.InnerText += id;


                //Console.Write(readStream.ReadToEnd());
                //response.Close();
                response = null;
                //readStream.Close();
                request = null;

                string date = Calendar1.SelectedDate.ToString("yyyy-MM-dd");

                string url2 = "https://api.appannie.com/v1/accounts/" + id + "/sales?break_down=application+date" +
                                            "&start_date="+date+
                                            "&end_date="+date+
                                            "&currency=USD" +
                                            "&countries=" +
                                            "&page_index=0";


                TextArea1.InnerText = url2;


                request = (HttpWebRequest)WebRequest.Create(url2);
                request.Proxy = WebProxy.GetDefaultProxy();
                request.Proxy.Credentials = CredentialCache.DefaultCredentials;
                request.Referer = "http://stackoverflow.com";
                request.Headers.Add("Authorization", "bearer **************");
                response = (HttpWebResponse)request.GetResponse();


                receiveStream = response.GetResponseStream();

                // Pipes the stream to a higher level stream reader with the required encoding format.
                readStream = new StreamReader(receiveStream, Encoding.UTF8);
                temp = "";
                temp = readStream.ReadToEnd();
                //TextArea1.InnerText = temp;

                string[] id_arr2 = temp.Split(',');
                int count2 = 0;
                string down = "";
                string update = "";
                while (count2 != id_arr2.Length)
                {

                    if (id_arr2[count2].Contains("downloads"))
                    {
                        down = id_arr2[count2];
                        count2 = id_arr2.Length;
                        break;
                    }

                    count2++;
                }

                count2 = 0;

                while (count2 != id_arr2.Length)
                {

                    if (id_arr2[count2].Contains("update"))
                    {
                        update = id_arr2[count2];
                        count2 = id_arr2.Length;
                        break;
                    }

                    count2++;
                }


                down = down.Substring(down.IndexOf("downloads") + 12);
                update = update.Substring(update.IndexOf("update") + 9);

                //TextArea1.InnerText = "downloads : "+down+ "----- update :" + update;

                TextBox1.Text = down;
                TextBox2.Text = update;


            }



            }

Once you publish it, one of the following is not taking effect:

  1. Credentials
  2. Proxy Settings.

Hence the remote api is giving back a 403. 2 ways to torubleshoot this further:

  1. Run fiddler trace on the working request/response and compare it with the non-working request/response. Typically a good API has more details in the response body as to why it is a 403 error.. (token invalid, invalid credentials etc.)

  2. You can also catch a WebException in code, and try to get the exception body if any. The same will also be visible in Fiddler.

<< code formatting refuses to work on my browser. please bear with unformatted code below >>

try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { // breakpoint and see what this is. string errorDetails = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd(); }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM