7

更新到 Android Studio 2.3 后,我似乎无法使用 Cloud Endpoints 的代码

class EndpointsAsyncTask extends AsyncTask<Pair<Context, String>, Void, String> {
    private static MyApi myApiService = null;
    private Context context;

    @Override
    protected String doInBackground(Pair<Context, String>... params) {
        if(myApiService == null) {  // Only do this once
            MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(),
                    new AndroidJsonFactory(), null)
                // options for running against local devappserver
                // - 10.0.2.2 is localhost's IP address in Android emulator
                // - turn off compression when running against local devappserver
                .setRootUrl("http://10.0.2.2:8080/_ah/api/")
                .setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
                    @Override
                    public void initialize(AbstractGoogleClientRequest<?> abstractGoogleClientRequest) throws IOException {
                        abstractGoogleClientRequest.setDisableGZipContent(true);
                    }
                });
                // end options for devappserver

            myApiService = builder.build();
        }

        context = params[0].first;
        String name = params[0].second;

        try {
            return myApiService.sayHi(name).execute().getData();
        } catch (IOException e) {
            return e.getMessage();
        }
    }

    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(context, result, Toast.LENGTH_LONG).show();
    }
}

导入 AndroidHttp 和 AndroidJsonFactory 会出现问题。它曾经使用 click-alt-enter 导入,而不是现在。我可以手动复制导入

import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.extensions.android.json.AndroidJsonFactory;
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
import com.google.api.client.googleapis.services.GoogleClientRequestInitializer;

但它突出显示“客户端”,无法解析符号客户端。gradle 文件具有依赖项编译项目(路径:':backend',配置:'android-endpoints'),我已经同步。

与其尝试回滚版本,我们现在需要使用不同的导入还是进行不同的配置?Google Cloud 页面上的代码现在是否已过时?

4

2 回答 2

13

我在端点 build.gradle 文件中添加了这些依赖项:

compile group: 'com.google.api-client', name: 'google-api-client', version: '1.22.0'
compile group: 'com.google.api-client', name: 'google-api-client-android', version: '1.22.0'

我不知道为什么突然需要它们,但我通过将这些依赖项添加到丢失的包中来解决它。

于 2017-04-26T08:12:12.360 回答
0

我能找到的最佳解决方案在这里

sdk 23 不再支持 HttpClient。您必须使用 URLConnection 或降级到 sdk 22

谷歌官方建议开发人员在这里使用 Volley 库进行网络相关的东西

于 2017-04-11T10:56:28.050 回答