gpt4 book ai didi

c# - eBay 大型商户服务 - 在 C# 中端到端添加固定价格项目

转载 作者:太空宇宙 更新时间:2023-11-03 13:31:52 24 4
gpt4 key购买 nike

我只是在学习如何与 eBay API 集成,并且正在努力让事情正常进行。

到目前为止,我可以使用标准交易 API 列出单个固定价格商品,但我需要能够批量上传商品,因此我正在研究 Large Merchant Service API。

目前我的工作流程如下:

  1. 找到优秀的工作并中止它们
  2. 创建一个新的CreateUploadJobRequest
  3. 创建一个新的UploadFileRequest
  4. 创建一个新的StartUploadJobRequest
  5. 创建一个新的GetJobStatusRequest
  6. 创建一个新的DownloadFileRequest

在第 6 步之前一切正常(我认为)。请求失败并出现 ProtocolException

直到那时,我一直在获取 fileReferenceIdjobId 和成功的响应。我用来尝试执行此操作的代码(看起来很讨厌)是:

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();
}
}

我已经在 Debug模式下完成了,我得到了一个 fileReferenceIDjobID

想到的一个想法是上传的 xml 有问题,我唯一能想到的是我的一些 header 有问题,但我看不出问题是什么.

理想情况下,我可以在以下方面获得帮助:

  1. 调试它并从服务中获取尽可能多的信息的最佳方法
  2. 关于可能出现问题的任何想法

在此先致谢,如果需要其他信息,请告诉我。


我现在已经设法确定问题所在,所以我会在此处发布解决方案,供可能遇到此问题的其他人使用。

在 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>

谢谢

最佳答案

这是一个完整的工作程序

https://ebaydts.com/eBayKBDetails?KBid=1338

了解 e call LMS 服务的代码太多了。

要通过 LMS 执行 Revise-Add-Relist-End FixedPriceItem 等请求,您必须创建这样的 xml

<?xml version="1.0" encoding="utf-8"?>
<BulkDataExchangeRequests>
<Header>
<SiteID>101</SiteID>
<Version>835</Version>
</Header>
<AddFixedPriceItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<ErrorLanguage>en_US</ErrorLanguage>
<MessageID>0G86041299</MessageID>
<Version>835</Version>
<WarningLevel>High</WarningLevel>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:ebay:apis:eBLBaseComponents">

</Item>
</AddFixedPriceItemRequest>
<AddFixedPriceItemRequest>
[.. other requests ]
</AddFixedPriceItemRequest>
<BulkDataExchangeRequests>

您可以使用 eBay SDK .NET 创建 ItemType XML 并序列化 ItemType 类。确保在需要的地方添加 xmlns="urn:ebay:apis:eBLBaseComponents"否则 eBay 的解析器将无法工作。

用CSharpZipLib压缩并通过uploadEndToEnd方法发送,得到响应解压响应文件并解析响应xml。

关于c# - eBay 大型商户服务 - 在 C# 中端到端添加固定价格项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20220982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com