2017-11-15 1 views
0

Ich versuche, den SubmitFeed mit der C# -Dll und einer Flatfile (nicht XML) zu arbeiten. Die Sprache ist C/AL für ein Microsoft ERP-System namens Dynamics NAV. Hier ist mein Code:Amazon C# request.FeedContent.Position = 0 Fehler "Kann nicht auf eine geschlossene Datei zugreifen"

config := config.MarketplaceWebServiceConfig(); 

config.ServiceURL := 'https://mws.amazonservices.com'; 

service := service.MarketplaceWebServiceClient(MyAccessKey,MySecretKey,'NAV','1.0',config); 

request := request.SubmitFeedRequest(); 

request.Merchant := 'mymerchant'; 

request.Marketplace := 'MyMarketPlaceID'; 

request.FeedContent := SystemIOFile.Open('C:\Test\Jason.txt',FileMode.Open,FileAccess.Read); 

request.ContentMD5 := service.CalculateContentMD5(request.FeedContent); 

request.FeedContent.Position := 0; 

request.FeedType := '_POST_INVENTORY_AVAILABILITY_DATA_'; 

response := service.SubmitFeed(request); 

Die request.FeedContentPosition: = 0-Linie ist, wo der Fehler ist, der sagt „Es kann keine geschlossene Datei zugreifen“

Ich habe submissioncount und submissionresult völlig arbeiten, kann ich nur‘ t erhalten submitfeed zu arbeiten.

Ich habe andere C# -Beispiele gefolgt und sie scheinen die gleichen zu sein, jeder hat Gedanken?

Antwort

0

Das herausgefunden. Diese Linie ist das, was die Datei schließt:

request.ContentMD5 := service.CalculateContentMD5(request.FeedContent); 

Ich glaube, das einen Fehler in C/AL (NAV) ist, wie ich einen ähnlichen Code in C# schreiben kann und es total funktioniert.

Meine Arbeit ist es, eine zweite Instanz der Anfrage zu erstellen und greifen Sie einfach den MD5-Wert von der ersten Anfrage. So funktioniert das:

request := request.SubmitFeedRequest();  
request.Merchant := "Merchant No.";  
request.FeedContent := SystemIOFIle.Open('C:\Test\Jason.txt',FileMode.Open,FileAccess.Read);  
MD5Value := WSClient.CalculateContentMD5(request.FeedContent); 
CLEAR(SystemIOFIle);  
CLEAR(request);   
request2 := request2.SubmitFeedRequest();  
request2.Merchant := "Merchant No.";  
request2.FeedContent := SystemIOFIle.Open('C:\Test\Jason.txt',FileMode.Open,FileAccess.Read); 

request2.ContentMD5 := MD5Value;  
request2.FeedContent.Position := 0;  
request2.FeedType := '_POST_FLAT_FILE_PRICEANDQUANTITYONLY_UPDATE_DATA_';  
response := service.SubmitFeed(request2); 
Verwandte Themen