【问题标题】:Post XML to jersey rest webservice将 XML 发布到球衣休息网络服务
【发布时间】:2016-06-24 09:07:23
【问题描述】:

我正在尝试将来自 facelet (.xhtml) 页面的消息发布到 REST Web 服务 (Jersey)。我认为如果服务器有的话,可以在 javascript/jQuery 中做,比方说

<?php header('Access-Control-Allow-Origin: *'); ?>

但是服务器似乎没有这样的属性,我不知道在哪里修改配置。

我试过了;

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "example.com",
  "method": "POST",
  "headers": {
    "content-type": "application/xml",
    "cache-control": "no-cache"
  },
"data": 
  "<consultation>\n    \n\
    <consultationDescription>"+description+"</consultationDescription>\n    \n\
    <customerName>"+fullName+"</customerName>\n    \n\
    <customerPhone>"+phonenumber+"</customerPhone>\n    \n\
    <endDateAndTime>"+endDateAndTime+"</endDateAndTime>\n    \n\
    <startDateAndTime>"+startDateAndTime+"</startDateAndTime>\n\n\
  </consultation>",
  contentType: "application/xml", 

$.ajax(settings).done(function (response) {
  console.log(response);
});

但我只收到跨源错误。

那么我应该尝试在服务器上找到修改源的位置,还是应该采用不同的方法?也许是一个 并通过 #{sendXML.someMethod} 等 javabean 发布,但我不知道在哪里可以找到它的语法。我已经被这个问题困扰了一段时间,找不到一个好的答案。你们有什么想法吗?

示例:http://postimg.org/image/5k2thyl3p/

单击绿色单元格--> 写消息(提交)--> 在服务器上预订时间。更新视图。

【问题讨论】:

  • 这是一个纯客户端的东西,与 JSF、javabeans 或 netbeans 无关。如果你想在服务器端做,它仍然与 jsf 无关,因为它是在“java”中完成的......所以选择吧..
  • @Kukeltje 我是新来的,对标签或术语不太了解。我的错。
  • 没问题。您应该从客户端(javascript)执行此操作,或者在 bean(java 代码)中执行服务器端。不要尝试通过破解表单标签或其他方式从 facelets 本身进行操作......
  • @Kukeltje 由于 javascript 无法工作,我可能应该尝试在 Java 代码的服务器端进行。这是一张关于我正在尝试做的事情的图片。 postimg.org/image/5k2thyl3p 当我点击一个绿色单元格时,我想向服务器发送一些信息。而已。您能否指出一些有关 java bean 的信息?

标签: javascript java rest


【解决方案1】:

所以我按照本指南了解了如何操作:http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/

private final String USER_AGENT = "Mozilla/5.0";

// HTTP POST request
private void sendPost() throws Exception {
try  {
    String url = "http://myurl";
    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();

    //add reuqest header
    con.setRequestMethod("POST");
    con.setRequestProperty("Accept-Language", "UTF-8");
    con.setRequestProperty("content-type", "application/xml");

    String urlParameters = "<myXML></myXML>";

    // Send post request
    con.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(urlParameters);
    wr.flush();
    wr.close();
catch (Exception e) {
    e.printStackTrace();
}
}

由于跨域错误导致 javascript 无法工作,因此在 Javabean 中进行工作就可以了。

我通过将 HttpsURLConnection 修改为 HttpURLConnection 并添加了 con.setRequestProperty("content-type", "application/xml") 来更改代码示例。

我还用 try/catch 包装了语句。

我可能从一开始就很糟糕地表达了我的问题。但是通过在 bean 中进行操作,它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多