我正在尝试将消息从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);
});
但我只得到原始错误。
那么我应该尝试在服务器上找到修改源的位置,还是应该采用不同的方法?也许一个&lt; h:形式&gt;并通过像#{sendXML.someMethod}等javabean发布,但我不知道在哪里可以找到它的语法。我已经坚持这个问题一段时间了,找不到一个好的答案。你们有什么想法吗?
示例:http://postimg.org/image/5k2thyl3p/
点击绿色单元格 - &gt;写信息(提交) - &gt;在服务器上预订时间。更新视图。
答案 0 :(得分:0)
所以我按照本指南想出了如何做到这一点: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中完成工作就可以了。
我通过将Http s URLConnection修改为HttpURLConnection并添加了con.setRequestProperty(“content-type”,“application / xml”)来更改代码示例。
我还用try / catch包裹了这个声明。
我可能从一开始就很难说出我的问题。但通过在bean中进行操作,它对我有用。