gpt4 book ai didi

Java:向方法传递多个参数

转载 作者:行者123 更新时间:2023-12-01 09:25:46 25 4
gpt4 key购买 nike

将多个参数传递给方法然后将这些参数放入有效负载中的正确方法是什么?

该方法应该向服务器发送一个带有负载的 HTTP 请求(并接收来自服务器的响应),这工作得很好:

public static JSONObject myMethod(String parameterOne, JSONArray parameterTwo, String parameterThree, long parameterFour) {

...

HttpPost request = new HttpPost(url);
request.addHeader("Content-Type", "application/json");

JSONObject payload = new JSONObject();
payload.put("parameterOne", parameterOne);
payload.put("parameterTwo", parameterTwo);
payload.put("parameterThree", parameterThree);
payload.put("parameterFour", parameterFour);

request.setEntity(new StringEntity(payload.toString()));

...

但是,我相信应该有另一种更有效(且美观)的方式来执行此操作。

最佳答案

这实际上取决于您需要方法的可重用性。如果您只想发送带有这组 4 个参数的请求,那么这可能是您能得到的最简洁的了。如果您希望发送任意 JSON 数据,您可能需要在方法外部构造 JSONObject,并将其作为单个参数传递。

如果您正在寻找小的语法胜利,您可能需要查看 google GuavaGson图书馆。他们会让你稍微浓缩一下:

public void callingMethod() {
Map<String, Object> params = ImmutableMap.of(
"param1Name", param1Value,
"param2Name", param2Value,
);
makeRequest(params);
}

public void makeRequest(Map<String, Object> params) {
HttpPost request = new HttpPost(url);
request.addHeader("Content-Type", "application/json");
request.setEntity(new Gson().toJson(params)));
}

或者,如果您要与整个 REST API 交互,您可以使用 Jersey 之类的库将其建模为 Java 类,然后创建一个代理来隐藏您正在发出 HTTP 请求的事实:

@Path("/v1")
public interface RestApi {
@POST
@Path("/objects/{objectId}/create")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
ResponseObject createObject(@PathParam("objectId") Integer objectId, RequestObject body);
}

public class RequestObject {
public final String param1;
public final List<Integer> param2;

public RequestObject(String param1, List<Integer> param2) {
this.param1 = param1;
this.param2 = param2;
}
}

public class ResponseObject {
// etc
}

public static void main() {
String url = "https://api.example.com";
Client client = ClientBuilder.newBuilder().build().target(url);
RestApi restApi = WebResourceFactory.newResource(RestApi.class, clientBuilder);
ResponseObject response = restApi.createObject(12, new RequestObject("param1", ImmutableList.of(1,2,3));
}

呃,我想这里的重点是 Java 并不是特别简洁。

关于Java:向方法传递多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com