用于JSON和JAVA的FOR循环

用于JSON和JAVA的FOR循环,java,json,loops,Java,Json,Loops,我有以下包含JSON的PostAPI代码。JSON中有一个URL被称为“” 我希望一次又一次地调用同一个API,但要针对不同的URL。我一直在通过调用这些API来截取上述URL网页的屏幕截图,所以我需要添加不同的URL。 是否有一种方法可以一次添加两个或多个URL,例如使用for循环或其他方法 OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json");

我有以下包含JSON的PostAPI代码。JSON中有一个URL被称为“” 我希望一次又一次地调用同一个API,但要针对不同的URL。我一直在通过调用这些API来截取上述URL网页的屏幕截图,所以我需要添加不同的URL。 是否有一种方法可以一次添加两个或多个URL,例如使用for循环或其他方法

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n  \"url\": \"https://www.nike.com\",\r\n  \"defer_time\": 5,\r\n  \"email\": true,\r\n  \"mac_res\": \"1024x768\",\r\n  \"win_res\": \"1366X768\",\r\n  \"smart_scroll\": true,\r\n  \"layout\": \"portrait\",\r\n  \"configs\": {\r\n    \"windows 10\": {\r\n      \"chrome\": [\r\n        \"76\",\r\n        \"75\",\r\n        \"74\"\r\n\r\n      ],\r\n      \"firefox\": [\r\n        \"67\",\r\n        \"66\"\r\n      ],\r\n      \"opera\": [\r\n        \"58\",\r\n        \"57\"\r\n      ],\r\n      \"ie\": [\r\n        \"11\"\r\n      ]\r\n    },\r\n    \"macos mojave\": {\r\n      \"chrome\": [\r\n        \"76\",\r\n        \"75\"\r\n      ],\r\n      \"firefox\": [\r\n        \"67\",\r\n        \"66\"\r\n      ],\r\n      \"opera\": [\r\n        \"58\",\r\n        \"57\"\r\n      ],\r\n      \"safari\": [\r\n        \"12\"\r\n      ]\r\n    },\r\n    \"ios 12.0\": {\r\n      \"devices\": [\r\n        \"iphone xr\",\r\n        \"iphone xs\",\r\n        \"iphone xs max\"\r\n      ]\r\n    },\r\n    \"android 9.0\": {\r\n      \"devices\": [\r\n        \"galaxy s9 plus\"\r\n      ]\r\n    }\r\n  }\r\n}");
Request request = new Request.Builder()
  .url("https://api.lambdatest.com/screenshots/v1/")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Basic cmFtaXRkbGFtYmRhdGVzdDpBTIzdWprdFdhU3VCUnE5ak9qSW52QmFlbGlleUMwMFhhdlpVUA==")
  .addHeader("Accept", "*/*")
  .addHeader("Cache-Control", "no-cache")
  .addHeader("Host", "api.lambdatest.com")
  .addHeader("Accept-Encoding", "gzip, deflate")
  .addHeader("Connection", "keep-alive")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

任何帮助都将不胜感激。

也许您可以尝试将代码块放入方法中

 public void jsonCall(String url, String body) {
    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, String.format("{\r\n  \"url\": \"%s\",\r\n  \"defer_time\": 5,\r\n  \"email\": true,\r\n  \"mac_res\": \"1024x768\",\r\n  \"win_res\": \"1366X768\",\r\n  \"smart_scroll\": true,\r\n  \"layout\": \"portrait\",\r\n  \"configs\": {\r\n    \"windows 10\": {\r\n      \"chrome\": [\r\n        \"76\",\r\n        \"75\",\r\n        \"74\"\r\n\r\n      ],\r\n      \"firefox\": [\r\n        \"67\",\r\n        \"66\"\r\n      ],\r\n      \"opera\": [\r\n        \"58\",\r\n        \"57\"\r\n      ],\r\n      \"ie\": [\r\n        \"11\"\r\n      ]\r\n    },\r\n    \"macos mojave\": {\r\n      \"chrome\": [\r\n        \"76\",\r\n        \"75\"\r\n      ],\r\n      \"firefox\": [\r\n        \"67\",\r\n        \"66\"\r\n      ],\r\n      \"opera\": [\r\n        \"58\",\r\n        \"57\"\r\n      ],\r\n      \"safari\": [\r\n        \"12\"\r\n      ]\r\n    },\r\n    \"ios 12.0\": {\r\n      \"devices\": [\r\n        \"iphone xr\",\r\n        \"iphone xs\",\r\n        \"iphone xs max\"\r\n      ]\r\n    },\r\n    \"android 9.0\": {\r\n      \"devices\": [\r\n        \"galaxy s9 plus\"\r\n      ]\r\n    }\r\n  }\r\n}", body));
    Request request = new Request.Builder()
            .url(url)
            .post(body)
            .addHeader("Content-Type", "application/json")
            .addHeader("Authorization", "Basic cmFtaXRkbGFtYmRhdGVzdDpBTIzdWprdFdhU3VCUnE5ak9qSW52QmFlbGlleUMwMFhhdlpVUA==")
            .addHeader("Accept", "*/*")
            .addHeader("Cache-Control", "no-cache")
            .addHeader("Host", "api.lambdatest.com")
            .addHeader("Accept-Encoding", "gzip, deflate")
            .addHeader("Connection", "keep-alive")
            .addHeader("cache-control", "no-cache")
            .build();

    Response response = client.newCall(request).execute();
}

public void callJson() {
    Map<String, String> urlAndBody = new HashMap<>();
    urlAndBody.put("https://api.lambdatest.com/screenshots/v1/", "https://www.nike.com");
    urlAndBody.put("https://api.lambdatest1.com/screenshots/v1/", "https://www.puma.com");
    urlAndBody.put("https://api.lambdatest2.com/screenshots/v1/", "https://www.adidas.com");
    // put more url body pair here

    urlAndBody.forEach((url, body) -> {
        this.jsonCall(url, body);
    });
}
public void jsonCall(字符串url、字符串正文){
OkHttpClient=新的OkHttpClient();
MediaType MediaType=MediaType.parse(“应用程序/json”);
RequestBody=RequestBody.create(mediaType,String.format(“{\r\n\”url\”:\%s\”,\r\n\“延迟时间\”:5、\r\n\“电子邮件\”:true、\r\n\“mac\u res\”:“1024x768\”,\r\n\“win\u res\”:“1366X768\”,\r\n\“智能卷轴\”:true、\r\n\“布局\\:“肖像\\”,\r\n\:“配置s\”:\r\n\”windows 10\r\n\:\r\n\“,\r\n\“75\”,\r\n\“74\”\r\n\r\n],\r\n\“firefox\”:[\r\n\“67\”,\r\n\“66\”\r\n],\r\n\“opera\”:[\r\n\“58\”,\r\n\“57\”\r\n],\r\n\“ie\:[\r\n\”:[\r\n\“11\”\r\n\r\n\r\n\r\n\r\n\”,\r\n\r\n\“macos-mojave\”:“chrome\”,\r\n\”,\r\r\n\,\r\r\n\r\n]、\r\n“firefox\”:[\r\n“67\”、\r\n“66\”\r\n]、\r\n“opera\”:[\r\n\“58\”、\r\n\“57\”\r\n]、\r\n“safari\”:[\r\n\“12\”\r\n\r\n\r\n\r\n\r\n\max、\r\n\ios 12.0\:{\r\n\r\n\“设备”:[\r\n\”:[\r\r\n\“iphone\”:[\r\n\r\r\n\”手机\r\n]\r\n}、\r\n\“android 9.0\”:{\r\n\“devices\”:[\r\n\“galaxy s9 plus\”\r\n]\r\n}\r\n},body));
Request Request=newrequest.Builder()
.url(url)
.职位(机构)
.addHeader(“内容类型”、“应用程序/json”)
.addHeader(“授权”,“基本CMFTAXRKBGFTYMRHDGVZDDPBTIZDWPRDFDHU3VCUNE5AK9QSW52QMFLBGLLEUMMFHHDLPVUA=”)
.addHeader(“接受”、“*/*”)
.addHeader(“缓存控制”、“无缓存”)
.addHeader(“主机”,“api.lambdatest.com”)
.addHeader(“接受编码”、“gzip、deflate”)
.addHeader(“连接”、“保持活动”)
.addHeader(“缓存控制”、“无缓存”)
.build();
Response=client.newCall(request.execute();
}
public void callJson(){
Map urlAndBody=new HashMap();
urlAndBody.put(“https://api.lambdatest.com/screenshots/v1/", "https://www.nike.com");
urlAndBody.put(“https://api.lambdatest1.com/screenshots/v1/", "https://www.puma.com");
urlAndBody.put(“https://api.lambdatest2.com/screenshots/v1/", "https://www.adidas.com");
//在此处放置更多url正文对
forEach((url,body)->{
jsonCall(url,body);
});
}

将该url替换为参数url。并根据需要多次调用此函数。每次只需给出不同的url?

您可以尝试在一个单独的方法中提取用于发出请求的所有代码,其中正文中的url是一个变量和一个方法参数。如果您将所需的url放入一个数组中,则可以在数组上进行for循环d使用不同的URL作为参数调用该方法。

我对JSON完全陌生,你能帮我举个例子吗?我对JSON完全陌生,你能帮我举个例子吗?更新了代码块,这是你想要的东西吗?谢谢你的代码,但我不想迭代API端点URL。我是要URLt是在JSON对象“”中输入的。您可以看到RequestBody中的URL再次更新,希望它是您正在查找的URL,直到它不起作用为止。编译器将%s作为URL,而不是将存储在其中的URL作为URL,并要求输入有效的URL。可能存在重复的