gpt4 book ai didi

java - 通过 HTTP 发送 XML 时出现问题

转载 作者:行者123 更新时间:2023-11-30 05:00:15 25 4
gpt4 key购买 nike

我想要一个应用程序来解析各种 RSS 源并将信息发送到远程服务器。信息以 xml 格式通过 http 发送。起初,我尝试在自己的服务器上部署此应用程序,因此我使用this tutorial中所示的方法发送xml。通过 Java 技巧。这是我从示例中复制的代码:

第一种方法

    String strURL = "http://localhost/readme/readme_xml";
String strXMLFilename = "output.xml";
File input = new File(strXMLFilename);


PostMethod post = new PostMethod(strURL);
post.setRequestEntity(new InputStreamRequestEntity(
new FileInputStream(input), input.length()));
post.setRequestHeader(
"Content-type", "text/xml; charset=ISO-8859-1");
HttpClient httpclient = new HttpClient();
try {

int result = httpclient.executeMethod(post);
System.out.println("Response status code: " + result);
System.out.println("Response body: ");
System.out.println(post.getResponseBodyAsString());
} finally {
post.releaseConnection();
}

这工作得很好(我什至使用本地主机之外的远程服务器进行了测试)。然后,不知何故,我无法使用自己的服务器来部署此应用程序,因此我决定迁移到 Google Apps Engine。据我们所知,关于它的一件事是,并非所有库都允许在环境中使用。所以我尝试了ExampleDepot.com中显示的另一种方法(虽然我找不到确切的网址),如下所示:

第二种方法

try {
/* fill up this url with the remote server url */
URL url = new URL("http://localhost/readme/readme_xml");
FileReader fr = new FileReader("output.xml");
char[] buffer = new char[1024*10];
int len = 0;
if ((len = fr.read(buffer)) != -1){
/* send http request to remote server */
URLConnection conn = url.openConnection();
conn.setRequestProperty("Content-Type","text/xml;charset=ISO-8859-1"); /* need to specify the content type */
conn.setDoOutput(true);
conn.setDoOutput(true);
PrintWriter pw = new PrintWriter(conn.getOutputStream());
pw.write(buffer, 0, len);
pw.flush();
/* receive response from remote server*/
BufferedReader bf = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String input = null;
while ((input = bf.readLine()) != null){
System.out.println(input);
}
}

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

但是第二种方法不起作用并给出以下错误(我使用 SimpleXMLElement (php) 对象来解析远程托管中的 xml):

Error message from remote server

这是来自远程服务器的 php 代码(在这里,我只想让 SimpleXMLElement 解析 xml,暂时不做任何其他事情)

$xml = new SimpleXMLElement('php://input', NULL, TRUE);
foreach ($xml -> attributes() as $name => $val){
echo "[".$name."] = ".$val."\n";
}

我认为这个问题的原因是xml文件故障(因为eclipse IDE指示存在“1字节utf-8序列的无效字节1”错误)。然后我使用与第一种方法完全相同的输入 xml 文件,但它仍然可以完美运行。

那么我需要对第二种方法做一些调整吗?或者还有其他方法可以用来将 xml 文件发送到远程服务器吗?如果我需要添加一些其他详细信息,请告诉我。感谢您的帮助。

<小时/>

注意:我实际上通过使用评论中给出的解决方案解决了这个问题。我没有使用答案中建议的方法,尽管这些答案非常有用。因此,我没有从给出的答案中选择最佳答案。尽管如此,我仍然感谢你们所有的帮助,因此值得我投票。干杯!

最佳答案

我想您需要将内容类型更改为 multipart/form-data。 See an already answered question详细。文件上传将在本例的底部讨论

关于java - 通过 HTTP 发送 XML 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7010823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com