我只是在学习如何与 eBay API 集成,我正在努力让事情正常进行。
到目前为止,我可以使用标准交易 API 列出单个固定价格商品,但我需要能够批量上传商品,因此我正在研究大型商家服务 API。
目前我的工作流程如下:
- 找到出色的工作并放弃它们
- 创建一个新的
CreateUploadJobRequest
- 创建一个新的
UploadFileRequest
- 创建一个新的
StartUploadJobRequest
- 创建一个新的
GetJobStatusRequest
- 创建一个新的
DownloadFileRequest
在第 6 步之前,一切都很好(我认为)。请求失败并显示ProtocolException
.
直到那时,我一直得到fileReferenceId
',jobId
'和成功的回应。我用来尝试执行此操作的代码(看起来很讨厌)是:
httpRequest.Headers.Remove("X-EBAY-SOA-SERVICE-NAME");
httpRequest.Headers.Remove("X-EBAY-SOA-OPERATION-NAME");
httpRequest.Headers.Add("X-EBAY-SOA-SERVICE-NAME", "FileTransferService");
httpRequest.Headers.Add("X-EBAY-SOA-OPERATION-NAME", "downloadFile");
if (jobStatResp != null)
{
var ftclient2 = new FileTransferServicePortClient("FileTransferServiceSOAP");
using (OperationContextScope scope2 = new OperationContextScope(ftclient2.InnerChannel))
{
OperationContext.Current.OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, httpRequest);
DownloadFileRequest downloadReq = new DownloadFileRequest();
downloadReq.fileReferenceId = jobStatResp.jobProfile[0].fileReferenceId;
downloadReq.taskReferenceId = jobStatResp.jobProfile[0].jobId;
DownloadFileResponse downloadResponse = ftclient2.downloadFile(downloadReq);
FileAttachment attachment = downloadResponse.fileAttachment;
FileStream fs = File.Create("response"+Guid.NewGuid());
BinaryWriter writer = new BinaryWriter(fs);
writer.Write(attachment.Data);
writer.Close();
fs.Close();
}
}
我已经在调试模式下完成了,我得到了一个fileReferenceID
and jobID
。
想到的一个想法是上传的xml有问题,我唯一能想到的另一件事是我的一些标题有问题,但我看不出问题是什么。
理想情况下,我可以在以下方面提供帮助:
- 调试此问题并从服务中获取尽可能多信息的最佳方法
- 关于可能出错的任何想法
提前致谢,如果需要其他信息,请告诉我。
我现在已经设法确定了问题所在,因此我将在此处为可能遇到此问题的其他人发布解决方案。
在 app.config 中,需要将以下内容附加到FileTransferService
您配置的端点
<mtomMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" messageVersion="Soap12" writeEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</mtomMessageEncoding>
谢谢