微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Httpwebrequest 在循环中运行时抛出错误

如何解决Httpwebrequest 在循环中运行时抛出错误

我正在使用已存储在数据库表中的 ID 通过 HttpWebRequest / HttpWebResponse 方法调用 Rest API URL。

我目前正在使用 for each 循环来遍历在 DataTable 中获取的每个 ID,然后调用 Rest API URL,最后将结果转储到多个表中。

代码有时运行良好,但有时会随机抛出以下错误: 远程服务器返回错误:(401) 未经授权。

我尝试了各种方法但无法破解,以下是我的代码供参考。

foreach (DaTarow drow in ds.Tables[0].Rows)
{
    string uri2 = "http://myrestURL/Transaction/" + drow.ItemArray[0].ToString();
    HttpWebRequest req2 = HttpWebRequest.CreateHttp(uri2);

    req2.CookieContainer = new CookieContainer();
    req2.Method = "GET";
    req2.UseDefaultCredentials = true;
    req2.ContentLength = 0;
    req2.Accept = "application/xml,*/*";
    req2.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

    using (HttpWebResponse resp2 = (HttpWebResponse)req2.GetResponse())
    {
        StringReader theReader;
        DataSet theDataSet;
        using (StreamReader reader2 = new StreamReader(resp2.GetResponseStream()))
        {
            string message2 = reader2.ReadToEnd();
            theReader = new StringReader(message2.ToString());
            theDataSet = new DataSet();
            theDataSet.readxml(theReader);

            DataTable dt = theDataSet.Tables["table1"];
            DataTable dt1 = theDataSet.Tables["table2"];
            DataTable dt2 = theDataSet.Tables["table3"];
            DataTable dt3 = theDataSet.Tables["table4"];

            dt.Columns.Add("ID",typeof(string));
            dt.Columns["ID"].Setordinal(0);

            foreach (DaTarow row in dt.Rows)
            {
                row["ID"] = drow.ItemArray[0].ToString();
            }

            dt1.Columns.Add("ID",typeof(string));
            dt1.Columns["ID"].Setordinal(0);

            foreach (DaTarow row in dt1.Rows)
            {
                row["ID"] = drow.ItemArray[0].ToString();
            }

            dt2.Columns.Add("ID",typeof(string));
            dt2.Columns["ID"].Setordinal(0);

            foreach (DaTarow row in dt2.Rows)
            {
                row["ID"] = drow.ItemArray[0].ToString();
            }

            dt3.Columns.Add("ID",typeof(string));
            dt3.Columns["ID"].Setordinal(0);

            foreach (DaTarow row in dt3.Rows)
            {
                row["ID"] = drow.ItemArray[0].ToString();
            }

            sqlConnection insertConn = new sqlConnection(strConn);
            insertConn.open();

            using (sqlBulkcopy bulkcopy1 = new sqlBulkcopy(insertConn))
            {                
                bulkcopy1.DestinationTableName = dt1.TableName;
                try
                {
                    bulkcopy1.WritetoServer(dt1);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            ...
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。