2013-11-26 44 views
2

我剛剛學習如何與eBay API集成,並且我正在努力使事情順利進行。eBay散裝商家服務 - C#中的AddFixedPriceItem結尾

到目前爲止,我可以使用標準交易API列出一個固定價格的物品,但我需要能夠批量上傳物品,因此我正在調查Bulk Merchant Service API。

目前我的工作流程如下:

  1. 找到優秀的工作,放棄他們
  2. 創建一個新的CreateUploadJobRequest
  3. 創建一個新的UploadFileRequest
  4. 創建一個新的StartUploadJobRequest
  5. 創建一個新的GetJobStatusRequest
  6. 創建一個新的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(); 
    } 
} 

我已經經歷了在調試模式下,我得到一個fileReferenceIDjobID

想到的一個問題是,上傳的XML存在問題,我唯一能想到的其他問題是我的一些頭文件存在問題,但我無法看到問題所在是。

理想的情況下,我可以與以下幫助做:調試這一點,並從服務儘可能

  • 獲得儘可能多的信息的

    1. 最佳方式是什麼可能會錯誤
    有什麼想法

    提前致謝,並請告知我是否需要其他信息。


    我現在已經設法確定問題是什麼,所以我會在這裏發佈解決方案給其他人可能會遇到這個問題。

    內的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> 
    

    感謝

  • +0

    我還要提到的是我穿過的唯一標記是用戶身份驗證令牌,我還沒有在App過去了,證書或開發令牌作爲教程我一直以來表明,我應該。不知道這是否是問題的一部分。 –

    回答

    1

    這是一個完整的工作程序

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

    有很多代碼來理解電話LMS服務。

    執行請求,如修訂,添加,重新登錄,結束FixedPriceItem通過LMS你必須創建這樣

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

    一個XML可以使用eBay SDK開發.NET創建的ItemType XML和序列化的類的ItemType 。 確保在需要的地方添加xmlns =「urn:ebay:apis:eBLBaseComponents」,否則eBay上的解析器將無法工作。

    用CSharpZipLib壓縮並通過uploadEndToEnd方法發送,獲取響應解壓縮響應文件並解析響應xml。

    +0

    鏈接已死,是否有可能通過其他方式獲取示例程序? – Julian50

    +1

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

    0

    我有同樣的問題,在步驟6請求中得到失敗與ProtocolException。我嘗試了kipper_t的解決方案,在app.config中添加mtomMessageEncoding,但是仍然得到了相同的失敗消息。

    最後只有下面的解決方案工作。使用此功能,以取代第6步,文件下載成功:

    https://ebay.custhelp.com/app/answers/detail/a_id/1567/~/downloadfile-sample-(xml)-in-c%23

    +0

    您的鏈接已死亡。是否有可能通過其他方式獲取樣本? – Julian50

    +0

    https://ebaydts.com/eBayKBDetails?KBid=1567 – jens