如何将URL从Javascript传递到Java模块

时间:2016-05-28 07:07:51

标签: javascript java rest

每当用户点击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/时 我没有回应。 在我的网络选项卡中显示 enter image description here

我正在使用 Tomcat 服务器来处理请求

2 个答案:

答案 0 :(得分:1)

问题在于你的Java方面 尝试更改您的Java代码

  • 使用POST
  • 避免使用路径参数 &安培;删除@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