簡體   English   中英

使用HttpClient - Java發送帶有HTTP POST請求的XML有效負載

[英]Sending XML payloads with HTTP POST request using HttpClient--Java

所以我一直在做很多關於stackoverflow和谷歌一般的嘗試回答我的下面的問題,但我一直無法找到任何可以幫助我100%完成這項工作的東西。 我很確定除了SMALL錯誤之外我還有其他一切,但顯然你們可能還有建議,所以去吧!

而且,我們開始:我一直在使用HTTPClient在幾個不同的環境中測試API,我使用HTTPPost方法接受JSON有效負載,但現在我正在嘗試使用XML發送有效負載而我遇到了一些問題。 似乎我正在創建的XML字符串(在下面的代碼中)是正確的...所以我很難過為什么這不起作用。 另外:從互聯網上獲取大部分DOM代碼(以構建XML有效負載),所以請隨意提出這個問題......

我的代碼如下:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

Document doc = docBuilder.newDocument();
Element subscription = doc.createElement("subscription");
doc.appendChild(subscription);

subscription.setAttribute("email", "patricia@test.intershop.de");
etc....
etc....
etc....
etc....

DOMSource domSource = new DomSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);

String XMLpayload = writer.toString();

[name of my HttpRequest].setEntity(new StringEntity(XMLpayload));
[name of my HttpResponse] = client.execute(request);

現在......我正在尋找下面看到的有效載荷:

<subscription>
    <email>patricia@test.intershop.de</email>
    <firstName>Patricia</firstName>
    <lastName>Miller</lastName>
    <title>Ms.</title>
    <gender>Female</gender>
</subscription>

當我打印出我當前發送的有效負載時,它看起來如下所示:

?xml version =“1.0”encoding =“UTF-8”standalone =“no”? 訂閱電子郵件=“patricia@test.intershop.de”firstName =“Patricia”gender =“Female”lastName =“Miller”title =“Ms。”/

(注意:我刪除了<AND>支架。他們應該出現在哪里!)

但是,我收到400錯誤。 這里有什么想法? 我知道我有正確的標題,URL是正確的等等。這絕對與我正在使用的有效負載有關。 任何想法將不勝感激!!

最好!

在您預期的有效負載中,“email”,“firstname”等是Subscription元素的子元素。 根據代碼,它們被添加為“訂閱”元素的屬性。 如果你需要'email','firstname'等作為子元素,你應該使用appendChild()而不是setAttribute()。

Element email = doc.createElement("email");
email.appendChild(document.createTextNode("patricia@test.intershop.de"));
subscription.appendChild(email);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM