我有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类似于传递整数值吗?
答案 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());
}