C# UploadSiteHostedPictures编译时出现异常错误500:resp=(HttpWebResponse)req.GetResponse();

C# UploadSiteHostedPictures编译时出现异常错误500:resp=(HttpWebResponse)req.GetResponse();,c#,ebay-api,C#,Ebay Api,尝试在AddFixedPriceItem呼叫中将图片上载到易趣以获取产品变体 我已将代码复制到我的程序表单中: 在调试期间,我仔细检查了令牌、密钥和eBay(沙盒)URL是否都是用于沙盒的,并正确地加载到变量中。我不知道我还需要做什么 代码在点击resp=(HttpWebResponse)req.GetResponse()时抛出异常 WebException:“远程服务器返回错误:(500)内部服务器错误” 这是我的代码(不带钥匙): 静态字符串上载SiteHostedPicture(字符串im

尝试在AddFixedPriceItem呼叫中将图片上载到易趣以获取产品变体

我已将代码复制到我的程序表单中:

在调试期间,我仔细检查了令牌、密钥和eBay(沙盒)URL是否都是用于沙盒的,并正确地加载到变量中。我不知道我还需要做什么

代码在点击
resp=(HttpWebResponse)req.GetResponse()时抛出异常

WebException:“远程服务器返回错误:(500)内部服务器错误”

这是我的代码(不带钥匙):

静态字符串上载SiteHostedPicture(字符串imageUrl) { 字符串响应=string.Empty

    string token = ConfigurationManager.AppSettings["UserAccount.ApiToken"];
    string SandboxOrProductionURL = ConfigurationManager.AppSettings["Environment.ApiServerUrl"];
    string PictureURL = imageUrl;
    string DevID = "Keys were removed before posting on stackoverflow";
    string AppID = "Keys were removed before posting on stackoverflow";
    string CertID = "Keys were removed before posting on stackoverflow";
    string payload = "<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
    "<UploadSiteHostedPicturesRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">" +
    "<ExternalPictureURL>" + PictureURL + "</ExternalPictureURL>" +
    "<RequesterCredentials><eBayAuthToken>" + token + "</eBayAuthToken></RequesterCredentials>" +
    "</UploadSiteHostedPicturesRequest>";
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(SandboxOrProductionURL);
    HttpWebResponse resp = null;
    //Add the request headers
    req.Headers.Add("X-EBAY-API-COMPATIBILITY-LEVEL", "803");
    req.Headers.Add("X-EBAY-API-SITEID", "0");
    req.Headers.Add("X-EBAY-API-CALL-NAME", "UploadSiteHostedPictures");
    req.Headers.Add("X-EBAY-API-DEV-NAME", DevID);
    req.Headers.Add("X-EBAY-API-APP-NAME", AppID);
    req.Headers.Add("X-EBAY-API-CERT-NAME", CertID);
    //set the method to POST
    req.Method = "POST";
    //Convert the string to a byte array
    byte[] postDataBytes = System.Text.Encoding.ASCII.GetBytes(payload);
    int len = postDataBytes.Length;
    req.ContentLength = len;
    //Post the request to eBay
    System.IO.Stream requestStream = req.GetRequestStream();
    requestStream.Write(postDataBytes, 0, len);
    requestStream.Close();
    try
    {
        // get response and write to console
        resp = (HttpWebResponse)req.GetResponse(); //THIS IS WHERE THE EXCEPTION OCCURS
        StreamReader responseReader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
        string output = responseReader.ReadToEnd();
        resp.Close();
        XmlDocument xmlResponse = new XmlDocument();
        xmlResponse.LoadXml(output);
        response = xmlResponse.ToString();
        //process response
        //show them how to get the full url and specify that in the AddItem request
    }
    catch (Exception ex)
    {
        MessageBox.Show("Exception caught from UploadSiteHostedPictures method:\r\n\r\n" + ex.Message);
    }
    return response;
}
string-token=ConfigurationManager.AppSettings[“UserAccount.ApiToken”];
字符串SandboxOrProductionURL=ConfigurationManager.AppSettings[“Environment.ApiServerUrl”];
字符串PictureURL=imageUrl;
string DevID=“在stackoverflow上过帐之前已删除密钥”;
string AppID=“在stackoverflow上过帐之前已删除密钥”;
string CertID=“在stackoverflow上过帐之前已删除密钥”;
字符串有效负载=“”+
"" +
“”+PictureURL+“”+
“”+标记+“”+
"";
HttpWebRequest req=(HttpWebRequest)WebRequest.Create(SandboxOrProductionURL);
HttpWebResponse resp=null;
//添加请求头
请求标题添加(“X-EBAY-API-COMPATIBILITY-LEVEL”、“803”);
请求标题。添加(“X-EBAY-API-SITEID”、“0”);
请求标题。添加(“X-EBAY-API-CALL-NAME”、“UploadSiteHostedPictures”);
请求标题添加(“X-EBAY-API-DEV-NAME”,DevID);
请求标题。添加(“X-EBAY-API-APP-NAME”,AppID);
请求标题。添加(“X-EBAY-API-CERT-NAME”,CertID);
//将方法设置为POST
请求方法=“POST”;
//将字符串转换为字节数组
字节[]postDataBytes=System.Text.Encoding.ASCII.GetBytes(有效负载);
int len=postDataBytes.Length;
req.ContentLength=len;
//将请求发布到易趣
System.IO.Stream requestStream=req.GetRequestStream();
Write(postDataBytes,0,len);
requestStream.Close();
尝试
{
//获取响应并写入控制台
resp=(HttpWebResponse)req.GetResponse();//这就是异常发生的地方
StreamReader responseReader=新的StreamReader(resp.GetResponseStream(),Encoding.UTF8);
字符串输出=responseReader.ReadToEnd();
分别关闭();
XmlDocument xmlResponse=新的XmlDocument();
LoadXml(输出);
response=xmlResponse.ToString();
//过程响应
//向他们展示如何获取完整url,并在AddItem请求中指定该url
}
捕获(例外情况除外)
{
MessageBox.Show(“从UploadSiteHostedPictures方法捕获的异常:\r\n\r\n”+ex.Message);
}
返回响应;
}

我使用了错误的沙盒URL。通常我使用SOAP,我没有意识到它们对于XML调用是不同的。请看这里:

此外,上面的代码是错误的,因为它没有从XML响应中正确提取上传的图像URL(并且没有返回它)。如果您想查看我的noob解决方案,那么这是应该位于try块(上面)中的代码:

试试看
{
//获取响应并写入控制台
resp=(HttpWebResponse)req.GetResponse();
StreamReader responseReader=新的StreamReader(resp.GetResponseStream(),Encoding.UTF8);
字符串输出=responseReader.ReadToEnd();
分别关闭();
//XmlDocument xmlResponse=新的XmlDocument();
//LoadXml(输出);
字符串[]outputArray1=Regex.Split(输出@“”);
字符串urlNowAtFrontOfString=outputArray1[1];
字符串[]outputArray2=Regex.Split(urlNowAtFrontOfString,@“”);
响应=输出阵列2[0];
//过程响应
//向他们展示如何获取完整url,并在AddItem请求中指定该url
}
  try
        {
            // get response and write to console
            resp = (HttpWebResponse)req.GetResponse();
            StreamReader responseReader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
            string output = responseReader.ReadToEnd();
            resp.Close();
            //XmlDocument xmlResponse = new XmlDocument();
            //xmlResponse.LoadXml(output);

            string[] outputArray1 = Regex.Split(output, @"<FullURL>");
            string urlNowAtFrontOfString = outputArray1[1];
            string[] outputArray2 = Regex.Split(urlNowAtFrontOfString, @"</FullURL>");
            response = outputArray2[0];
            //process response
            //show them how to get the full url and specify that in the AddItem request
        }