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