所以我一直在做很多关于stackoverflow和google的尝试回答我的下面的问题,但是我找不到任何可以帮助我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。”/
(注意:我删除了&lt; AND&gt; BRACKETS。他们应该出现在哪里!)
但是,我收到400错误。这里有什么想法?我知道我有正确的标题,URL是正确的等等。这绝对与我正在使用的有效负载有关。任何想法都将非常感谢!!
最佳!
答案 0 :(得分:3)
在您预期的有效负载中,'email','firstname'等是Subscription元素的子元素。根据代码,它们被添加为“订阅”元素的属性。如果你需要'email','firstname'等作为子元素,你应该使用appendChild()而不是setAttribute()。
Element email = doc.createElement("email");
email.appendChild(document.createTextNode("patricia@test.intershop.de"));
subscription.appendChild(email);