0

我想实现以下目标。将我的文件交换应用程序迁移到新的 eBay 提要 api。

请查看关注页面。

API - 供稿参考:

链接到文件交换迁移过程

链接到 eBay Sell Feed API

我正在采用上述链接中所述的程序,但在调用 Sell Feed API -> uploadFile 方法时收到以下错误。

"errorId": 2003,
      "domain": "ACCESS",
      "category": "APPLICATION",
      "message": "Internal error",
      "longMessage": "There was a problem with an eBay internal system or process. Contact eBay developer support for assistance",
      "parameters": [
        { "name": "code",  "value": "400"  },
        { "name": "message", "value": "HTTP 400 Bad Request"  }

请检查我的请求。

端点:“https://api.ebay.com/sell/feed/v1/task/task-40-xxxxxxxxx/upload_file”

请求标头:

Authorization:Bearer myToken
Accept:application/json
Content-Type:multipart/form-data
X-EBAY-C-MARKETPLACE-ID: EBAY_US

有效载荷:

{ 
"fileName" : "https://virtualwebdesk.com/brad/feed.csv",
"name" : "file",
"type" : "form-data"
}

请注意:我先创建 TaskID,然后传入调用。

4

1 回答 1

0
    This code is in C# - RestClient
    
    createTask
    ==========
    var client = new RestClient("https://api.ebay.com/sell/feed/v1/task");
    client.Timeout = -1;
    var request = new RestRequest(Method.POST);
    request.AddHeader("Authorization", "Bearer v^1.1#i^1****** YOUR USER ACCESS TOKEN *********Ql3QYER3BQAAA==");
    request.AddHeader("Accept", "application/json");
    request.AddHeader("Content-Type", "application/json");
    request.AddHeader("X-EBAY-C-MARKETPLACE-ID", "EBAY_GB");
    var body = @"{
    " + "\n" +
    @"  ""schemaVersion"": ""1149"",
    " + "\n" +
    @"  ""feedType"": ""LMS_REVISE_INVENTORY_STATUS""
    " + "\n" +
    @"}";
    request.AddParameter("application/json", body,  ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    Console.WriteLine(response.Content);
    
    Response:
    location:https://api.ebay.com/sell/feed/v1/task/task-12-1127376027
    
    task-12-1127376027 is your TaskID
    
    uploadFile
    ==========
test.xml
--------

<?xml version="1.0" encoding="utf-8" ?>
<BulkDataExchangeRequests xmlns="urn:ebay:apis:eBLBaseComponents">
    <Header>
        <Version>685</Version>
        <SiteID>3</SiteID>
    </Header>
    <ReviseInventoryStatusRequest xmlns="urn:ebay:apis:eBLBaseComponents">
        <ErrorLanguage>en_US</ErrorLanguage>
        <WarningLevel>High</WarningLevel>
        <MessageID>test-1111</MessageID>
        <Version>637</Version>
        <InventoryStatus ComplexType="InventoryStatusType">
            <SKU>test-1111</SKU>
            <Quantity>2</Quantity>
        </InventoryStatus>
    </ReviseInventoryStatusRequest>
    <ReviseInventoryStatusRequest xmlns="urn:ebay:apis:eBLBaseComponents">
        <ErrorLanguage>en_US</ErrorLanguage>
        <WarningLevel>High</WarningLevel>
        <MessageID>test-2222</MessageID>
        <Version>637</Version>
        <InventoryStatus ComplexType="InventoryStatusType">
            <SKU>test-2222</SKU>
            <Quantity>0</Quantity>
        </InventoryStatus>
    </ReviseInventoryStatusRequest>
</BulkDataExchangeRequests>


    var client = new RestClient("https://api.ebay.com/sell/feed/v1/task/task-12-1127376027/upload_file");
    client.Timeout = -1;
    var request = new RestRequest(Method.POST);
    request.AddHeader("Authorization", "Bearer v^1.1#i^1****** YOUR USER ACCESS TOKEN *********Ql3QYER3BQAAA==");
    request.AddHeader("X-EBAY-C-MARKETPLACE-ID", "EBAY_GB");
    request.AddHeader("Accept", "application/json");
    request.AddHeader("Content-Type", "multipart/form-data");
    request.AddParameter("fileName", "test.xml");
    request.AddFile("file", "F:/test.xml");
    request.AddParameter("type", "form-data");
    IRestResponse response = client.Execute(request);
    Console.WriteLine(response.Content);
    
    Response: "StatusCode: OK, Content-Type: , Content-Length: 0)"
    
    getTask
    ========
    var client = new RestClient("https://api.ebay.com/sell/feed/v1/task/task-12-1235290549");
    client.Timeout = -1;
    var request = new RestRequest(Method.GET);
    request.AddHeader("Authorization", "Bearer v^1.1#i^1****** YOUR USER ACCESS TOKEN *********Ql3QYER3BQAAA==");
    request.AddHeader("Accept", "application/json");
    request.AddHeader("Content-Type", "application/json");
    IRestResponse response = client.Execute(request);
    Console.WriteLine(response.Content);
    
    Response:
    {
        "taskId": "task-12-1127376027",
        "status": "COMPLETED",
        "feedType": "LMS_REVISE_INVENTORY_STATUS",
        "creationDate": "2022-02-09T11:39:50.000Z",
        "completionDate": "2022-02-09T11:50:34.000Z",
        "uploadSummary": {
            "successCount": 2,
            "failureCount": 0
        }
    }
于 2022-02-09T12:44:36.980 回答