每当用户点击Chrome扩展程序时,我都希望将URL字符串发送到java模块。
这是我的JS代码
document.addEventListener('DOMContentLoaded', function () {
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
alert(tabs[0].url)
var http = new XMLHttpRequest();
var someValue = "http://chums/chummi";
var url = "http://localhost:8080/SalesRESTservice/apicall/restcall2/";
http.open("GET", url, true);
http.setRequestHeader("Content-type", "application/json; charset=utf-8");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.send(someValue);
});
});
这是我的Java
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import org.json.JSONException;
import org.json.JSONObject;
@Path("/restcall2")
public class restcall2 {
@Path("{f}")
@GET
@Produces("text/plain")
public Response RESTcall(@PathParam("f") String f) throws JSONException {
return Response.status(200).entity(f).build();
}
}
每当我尝试点击网址http://localhost:8080/SalesRESTservice/apicall/restcall2/
时
我没有回应。
在我的网络选项卡中显示
我正在使用 Tomcat 服务器来处理请求
答案 0 :(得分:1)
问题在于你的Java方面 尝试更改您的Java代码
避免使用路径参数 &安培;删除@path {f},这将确保没有其他 值不会命中URL
import javax.ws.rs.GET;
@Path("/restcall2")
public class restcall2 {
@POST
@Produces("text/plain")
public Response RESTcall(String f) throws JSONException {
System.out.println(f);
return Response.status(200).entity("hello " + f).build();
}
}
答案 1 :(得分:0)
405 - 不允许使用方法
您的服务器没有收听网址。
还要尝试GET / restcall2 / somevalue
检查部署配置和服务器日志。使用提供的信息,无法猜出服务器部分失败的原因
关于一般项目:您应该将GET更改为POST以避免URL编码问题
http.send(someValue)用于POST请求
如果不使用json,请不要使用编码aplicación/ json。对于该示例,您可以使用
POST / restcall2 应用程序/ x-WWW窗体-urlencoded myurl = someValue中
在服务器部分
@POST
@Path("/")
public Response RESTcall(
@FormParam("myurl") String url