찾다

 >  Q&A  >  본문

android - OkhttpUtil回调解析成功,怎么传出来?

代码如下,先会去执行returnUrl,等到第二次调用getHeadUrl该方法才会去到onResponse返回数据。


public static String getHeadUrl(long userid) {
    final String url = ServiceResponseURL.GetLogoUrl(userid);
    OkHttpUtils.get().url(url).build().execute(new StringCallback() {
        @Override
        public void onError(Call call, Exception e, int id) {
            returnUrl = null;
        }
        @Override
        public void onResponse(String response, int id) {
            JSONObject all = JSON.parseObject(response);
            returnUrl = all.getString("imageUrl");
        }
    });
    return returnUrl;
}
迷茫迷茫2772일 전472

모든 응답(4)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-17 17:48:45

    으아악

    Callback밖으로 던져보세요. 또는 Response을 직접 받아

    처리하세요.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 17:48:45

    데이터를 내보내려면 동기화를 직접 사용하세요.

    execute()에는 콜백 매개변수가 없으며, .execute() 메서드가 종료된 후 반환 결과가 직접 생성됩니다.

    으아악

    문서 GitHub를 잘 살펴보세요

    회신하다
    0
  • PHPz

    PHPz2017-04-17 17:48:45

    답변은 위에 3가지 정도 있습니다.

    1. 동기 차단 방식을 사용하여 반환 값을 직접 가져옵니다.

    2. 비동기식에서 동기식으로 메시지가 콜백으로 전송되고 다른 스레드에서 처리됩니다.

    3. 비동기 처리는 콜백에서 직접 수행됩니다.
      무엇을 하느냐에 따라 다릅니다. .

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 17:48:45

    = =~분명히 콜백 함수가 실행되기 전에 반환을 하셨군요... 외부에 새 StringCallback을 작성하고 headerUrl 처리를 콜백에 넘기는 것이 좋습니다. . 아니면 이렇게 작성하고 setHeaderUrl(headerUrl)을 호출하여 headerUrl을 전달하세요~~

    회신하다
    0
  • 취소회신하다