
Originally Posted by
anda_skoa
At which stage to you get into problems? Creating the XML? Sending it? How does you current code look like? What does it do that you do not expect? What does it not do that you would expect it to do?
Sorry for being brief. I'm having trouble sending the XML, each time I get an invalid reply. See below:
Request:
QXmlStreamWriter swTest(&XMLTest);
swTest.setAutoFormatting(true);
swTest.writeStartDocument();
swTest.writeEndDocument();
QUrl Params
(BuildRequest
(1, account, marketplaces
));
QNetworkRequest request(Params);
QString BodyMD5
= QString(QCryptographicHash
::hash((XMLTest
),QCryptographicHash
::Md5).
toHex());
request.setRawHeader("Content-Type", "text/xml; charset=iso-8859-1");
request.setRawHeader("Content-MD5", BodyMD5.toLatin1().toBase64());
request.setRawHeader("User-Agent", "TestBuild");
request.setRawHeader("Host", "mws.amazonservices.co.uk");
request.setRawHeader("Transfer-Encoding", "chunked");
request.setRawHeader("MWSClientVersion", "2009-03-09");
QNetworkAccessManager test;
connect(&test, SIGNAL(finished(QNetworkReply*)), &loop2, SLOT(quit()));
QNetworkReply *reply = test.post(request, request.url().query().toUtf8());
loop2.exec();
QByteArray XMLTest;
QXmlStreamWriter swTest(&XMLTest);
swTest.setAutoFormatting(true);
swTest.writeStartDocument();
swTest.writeEndDocument();
QUrl Params(BuildRequest(1, account, marketplaces));
QNetworkRequest request(Params);
QString BodyMD5 = QString(QCryptographicHash::hash((XMLTest),QCryptographicHash::Md5).toHex());
request.setRawHeader("Content-Type", "text/xml; charset=iso-8859-1");
request.setRawHeader("Content-MD5", BodyMD5.toLatin1().toBase64());
request.setRawHeader("User-Agent", "TestBuild");
request.setRawHeader("Host", "mws.amazonservices.co.uk");
request.setRawHeader("Transfer-Encoding", "chunked");
request.setRawHeader("MWSClientVersion", "2009-03-09");
QNetworkAccessManager test;
QEventLoop loop2;
connect(&test, SIGNAL(finished(QNetworkReply*)), &loop2, SLOT(quit()));
QNetworkReply *reply = test.post(request, request.url().query().toUtf8());
loop2.exec();
QString str = reply->readAll();
To copy to clipboard, switch view to plain text mode
str returns an empty string, and the status code is 0.
BuildRequest:
QUrl req
("https://mws.amazonservices.co.uk");
QUrlQuery q;
q.addQueryItem("AWSAccessKeyId", AccessKey);
q.addQueryItem("Action", action);
q.addQueryItem("Merchant", MerchantID);
q.addQueryItem("SignatureVersion", "2");
q.addQueryItem("Timestamp", Timestamp.toString());
q.addQueryItem("Version", "2009-01-01");
q.addQueryItem("Signature", Signature);
q.addQueryItem("SignatureMethod", "HmacSHA256");
q.addQueryItem("FeedType", type);
q.addQueryItem("MarketplaceIdList.Id." + MarketplaceListID, marketplace.value("MarketplaceID").toString());
q.addQueryItem("PurgeAndReplace", "false");
req.setQuery(q);
return req;
QUrl req("https://mws.amazonservices.co.uk");
QUrlQuery q;
q.addQueryItem("AWSAccessKeyId", AccessKey);
q.addQueryItem("Action", action);
q.addQueryItem("Merchant", MerchantID);
q.addQueryItem("SignatureVersion", "2");
q.addQueryItem("Timestamp", Timestamp.toString());
q.addQueryItem("Version", "2009-01-01");
q.addQueryItem("Signature", Signature);
q.addQueryItem("SignatureMethod", "HmacSHA256");
q.addQueryItem("FeedType", type);
q.addQueryItem("MarketplaceIdList.Id." + MarketplaceListID, marketplace.value("MarketplaceID").toString());
q.addQueryItem("PurgeAndReplace", "false");
req.setQuery(q);
return req;
To copy to clipboard, switch view to plain text mode

Originally Posted by
ChrisW67
What does "XML 1st line" even mean?
I just want to send the XML 1st line (the XML declaration) to Amazon, for testing purposes.
Bookmarks