gpt4 book ai didi

java - 在 HTTP 请求返回值之前阻止函数向前移动

转载 作者:行者123 更新时间:2023-12-02 06:11:41 26 4
gpt4 key购买 nike

我有一个 HTTP 请求发送到服务器,其中包含一些操作和参数。它返回一个响应。我希望这个函数等待,直到它获得响应并根据我的选择映射数据(例如,将值设置为事件的对象类)。然后,它将将此数据返回到调用它的函数。

例如:我从这里调用 getEventWithID:

public uk.co.createanet.bloc.Networking.DynamoDB.Mapping.Event fetchAdvertEvent(Long eventID) {
return EventHelper.getEventWithID(eventID);
}

getEventWithID - 调用 HTTP 请求并获取响应。我希望这个函数在收到服务器的响应之前不要返回。

public static Event getEventWithID(Long eventID, IHelperRequestCompletion<Event> completion) {

Event event = new Event();

Map<String, Object> params = new HashMap<>();
params.put("eventID", eventID);

HttpHelper.getInstance().makeApiHttpRequestNewServer("get-event", params, new IHelperRequestCompletion<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
event.setID(response.getLong("uniqueID"));
event.setPlaceID(response.getLong("placeID"));
event.setType(response.getString("type"));
event.setTimestamp(response.getDouble("date"));
if(response.toString().contains("people")){
JSONArray attendingPPL = response.getJSONArray("people");
Set<Long> attendingPPLList = new HashSet<>();

for (int i = 0; i < attendingPPL.length(); i++) {
attendingPPLList.add(Long.parseLong(attendingPPL.getString(i)));
}
event.setAttendingPeopleIDs(attendingPPLList);
}

if(event.getID()!=null) {
AppDatabase.getAppDatabase(BlocApplication.getAppContext()).eventDao().insertAll(event);
if(completion !=null){
completion.onResponse(event);
}
}

}catch (Exception err){
Log.v("Error in getEventByID", err.getLocalizedMessage());
}

}

@Override
public void onError(Throwable error) {
Log.v("Error in getEventByID", error.getLocalizedMessage());
}

});

return event;
}

最佳答案

如果您正在进行异步调用并返回一个值,那么这个函数将不起作用,为了实现这种功能,您必须创建一个接口(interface)并通过监听器返回值。

关于java - 在 HTTP 请求返回值之前阻止函数向前移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55902607/

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