6

我开发了 REST 服务。我可以通过浏览器或客户端应用程序测试 GET 方法。但是那些有 PUT 方法的人我不知道浏览器如何使用它们......

例如,在我插入 userId 后,我有一个打开灯的方法:

@PUT
@Path("/lampon")
@Produces({"application/json", "text/plain"})
@Consumes("multipart/form-data")
public boolean turnOnLamp(@FormParam("userId") String userId) throws Exception
{
    boolean response = new LampManager().turnOnLamp(userId);
    return response;
}

在我的客户端应用程序中,我这样做了,它可以工作:

    String webPage = "http://localhost:8080/BliveServices/webresources/services.actuators/lampon";

    URL urlToRequest = new URL(webPage);

    //Authentication

    urlConnection = (HttpURLConnection) urlToRequest.openConnection();
    urlConnection.setReadTimeout(10000);
    urlConnection.setConnectTimeout(15000);
    urlConnection.setRequestMethod("PUT");
    urlConnection.setRequestProperty("Authorization", basicAuth);
    urlConnection.setRequestProperty("Content-type", "multipart/form-data");
    urlConnection.setRequestProperty("Accept", "application/json");
    urlConnection.setDoOutput(true);
    urlConnection.setDoInput(true);

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("userId", "2"));

    (...)

但是如何通过浏览器发送 userId 呢?

另一件事,我在构建项目时收到此消息:

SEVERE: Resource methods utilizing @FormParam and consuming "multipart/form-data" are no longer supported. See @FormDataParam.

谢谢

4

2 回答 2

9

如果你想用你的浏览器测试 REST-Webservice,你必须安装一个插件。

如果你使用谷歌浏览器,你可以安装 REST 控制台,我也使用这些插件来测试我的 Web 服务。

https://chrome.google.com/webstore/detail/rest-console/cokgbflfommojglbmbpenpphppikmonn

对于 Firefox 安装这些 REST-Client

https://addons.mozilla.org/en-us/firefox/addon/restclient/

REST 客户端也可用于 Safari http://restclient.net/

对于 Opera,您可以查看 Simple REST-Client

https://addons.opera.com/en/extensions/details/simple-rest-client/

对于你的第二个问题

请尝试使用值'application/x-www-form-urlencoded'

于 2013-04-04T13:41:46.360 回答
3

要从浏览器发出 put-request,您可以使用 jQuery 的jQuery.ajax(). ( http://api.jquery.com/jQuery.ajax/ )

例如:

$.ajax({
  url: "test-url",
  type: "PUT",
  data: {userid: 1}
})

将使用指定数据向 test-url 发送 put-request。

于 2013-04-04T13:30:01.513 回答