我有一个客户端方法:
@SuppressWarnings("unchecked")
public static void main(String[] args){
mediaTracker = new MediaTracker(frame);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(dim.width, dim.height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
setFullScreen();
RSACipher rsaCipher = new RSACipher();
// client side code
RSAKeyPair keyPair;
try {
keyPair = new RSAKeyPair(2048);
String servletURL = "http://localhost:8080/AesRsaEncryptionServiceRest/aesrsarest/doc/encryptionservice?pkey=pkey&skey=skey";
Gson gson = new GsonBuilder().create();
URL servlet = null;
try {
servlet = new URL(servletURL);
System.out.println("Sending request to " + servletURL);
HttpURLConnection servletConnection = (HttpURLConnection) servlet.openConnection();
servletConnection.setRequestMethod("POST");
servletConnection.setDoOutput(true);
servletConnection.setDoInput(true);
//send the keys to the server
ObjectOutputStream objOut = new ObjectOutputStream(servletConnection.getOutputStream());
objOut.writeObject(keyPair.getPublicKey());
objOut.flush();
objOut.close();
在第ObjectOutputStream objout
行中,我传递了加密所需的公钥。我想知道,如果可以将带参数的String参数传递给post方法吗?
我尝试创建一个新对象,然后我将String参数和公钥对象传递给对象流,但它没有用。我需要String参数来传递要使用RESTful服务加密的文件名
答案 0 :(得分:1)
假设它是一个json请求,我们可以使用任何json解析器(即Gson,Jackson等)将对象转换为json并将其POST到url。下面是使用Jackson传递Map
(对象)的示例。
OutputStreamWriter out = new OutputStreamWriter(servletConnection.getOutputStream());
ObjectMapper mapper = new ObjectMapper(); //Jackson Object mapper
Map<String, Object> data = new HashMap<String, Object>();
data.put("key", "value");
out.write(mapper.writeValueAsString(data));
类似地,我们可以将任何对象转换为json并将其发送到有效载荷中。