Java 如何传递多组http参数以访问Web服务
当我在Nessus扫描仪上工作时,我必须传递参数来创建扫描。请求正文应为:Java 如何传递多组http参数以访问Web服务,java,rest,nessus,Java,Rest,Nessus,当我在Nessus扫描仪上工作时,我必须传递参数来创建扫描。请求正文应为: { "uuid": {template_uuid}, "settings": { "name": {string}, "description": {string}, "emails": {string}, "launch": {string}, "folder_id": {integer},
{
"uuid": {template_uuid},
"settings": {
"name": {string},
"description": {string},
"emails": {string},
"launch": {string},
"folder_id": {integer},
"policy_id": {integer},
"scanner_id": {integer},
"text_targets": {string}
}
}
目前,我正试图通过以下代码传递这些参数:
public static void createScan(){
String url = SERVER_URL+"/scans";
String[] paramName = {"uuid", "settings.name","settings.policy_id","settings.text_targets"};
String[] paramVal = {"xxxx", "xxxx", "xxxx","xx.xx.xxx.xxx"};
try {
String token = login();
httpPost(url, paramName, paramVal, token);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String httpPost(String urlStr, String[] paramName, String[] paramVal, String token) throws Exception {
URL url = new URL(urlStr);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setAllowUserInteraction(false);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setConnectTimeout(500000);
conn.setReadTimeout(500000);
conn.setRequestProperty("X-Cookie:", "token=" + token + ";");
if (paramName != null && paramVal != null) {
OutputStream out = conn.getOutputStream();
Writer writer = new OutputStreamWriter(out, "UTF-8");
for (int i = 0; i < paramName.length; i++) {
writer.write(paramName[i]);
writer.write("=");
writer.write(URLEncoder.encode(paramVal[i], "UTF-8"));
writer.write("&");
}
writer.close();
out.close();
}
if (conn.getResponseCode() != 200) {
throw new IOException(conn.getResponseMessage());
}
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
conn.disconnect();
return sb.toString();
}
<>请帮助我成功地传递这些参数,在NESSUS < P>中创建一个扫描。我不能真正帮助您解决这个问题,但是您应该真正考虑使用Jackson或一些其他XML/JSON解析器,因为您似乎需要在JSON中发送数据。只需传递一个对象,Jackson解析器就会将其转换为JSON 更多有关:
还考虑使用Apache HTTPclipse,因为它仍然包含在Android中。这样可以减少混乱,更容易维护
Response code: 403
java.io.IOException: Unauthorized