如何将变量和json传递给Web服务。

时间:2014-04-18 20:55:02

标签: java web-services

我有2个网络服务 -

1) http://address.to.web.service/product/getProductById?productId=1000
2) http://address.to.web.service/product/updateProduct

第一个获取产品而另一个获取产品。

updateService将输入作为json -

{
  "productId" : 1,
  "productName" : "XYZ",
  "Price": "$25.00"
}

我使用Postman测试了两个网址并且工作正常。

不熟悉网络服务, 我想知道将参数传递给webservice的最佳方法是什么。

传递JSON类似于传递整数值吗?

2 个答案:

答案 0 :(得分:1)

要从Java调用Web服务,请尝试使用Spring中的RestTemplate,在他们的分步教程中进行描述。

答案 1 :(得分:1)

到目前为止,我无法告诉您如何使用java存档,但您可以尝试使用curl:

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"productId" : 1,  "productName" : "XYZ", "Price": "$25.00"}' http://address.to.web.service/product/updateProduct

如您所见,您必须指定发送json内容以及HTTP方法(POST以创建资源)。

PS。尝试PATCH更新。

修改

我已经完成了这项工作,首先您需要导入所需的类:

import java.net.HttpURLConnection;
import java.io.DataOutputStream;
import java.net.URL;

用这种方法:

try {
    URL url = new URL("http://address.to.web.service/product/updateProduct");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.setUseCaches(false);
    conn.setAllowUserInteraction(false);
    conn.setRequestProperty("Content-Type", "application/json");

    DataOutputStream out = new DataOutputStream(conn.getOutputStream());

    out.writeBytes("{\"productId\" : 1,  \"productName\" : \"XYZ\", \"Price\": \"$25.00\"}");
    out.flush();
    out.close();
} catch (Exception e) {
    System.out.println(e.toString());
}