0

GAEクラウドでホストされているGAEアプリケーションでGoogleサービスを呼び出そうとしています。

private String doPost(String URL) throws ClientProtocolException, IOException {
    // Params:
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("accountType", "HOSTED_OR_GOOGLE"));
    params.add(new BasicNameValuePair("Email", _DEFAULT_USER));
    params.add(new BasicNameValuePair("Passwd", _DEFAULT_PASS));
    params.add(new BasicNameValuePair("service", "ah"));
    // Call
    HttpClient httpClient = new DefaultHttpClient();
    HttpPost post = new HttpPost(URL); // URL:
                                        // https://www.google.com/accounts/ClientLogin
    post.setEntity(new UrlEncodedFormEntity(p_params, HTTP.UTF_8));
    post.getParams().setBooleanParameter(
            CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
    HttpResponse response = httpClient.execute(post);
    return _ProcessResponse(response); // Process...
}

実行は次をスローします: com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'remote_socket' or call 'Resolve()' was not found

何か案は?私は完全に迷子になっています...

4

3 に答える 3

1

別のhttpクライアントを使用できますか?ここで推奨されるような:

client = new HttpClient(new SimpleHttpConnectionManager()); 

または、URLFetchServiceを使用するのはどうですか?

このブログ投稿によると、次のものが必要です。

「最終的なリクエストを変換してURLFetchサービスにフィードし、応答をHttpClientにフィードバックするカスタム接続マネージャー。」

于 2012-10-03T14:59:05.363 に答える
1

API package 'remote_socket' or call 'Resolve()' was not found は、名前解決を行うように InetAddress が要求され、基になる API (remote_socket.Resolve) が見つからなかったことを意味します。

remote_socket API は、ソケットのトラステッド テスター プログラムの一部として有効になっています。

とにかく、あなたの問題は、アプリ エンジン ランタイムでの IP アドレス (localhost など以外) の解決をまだサポートしていないことです。

urlfetch API を直接使用することをお勧めします。これが回避策の 1 つです。

于 2012-10-04T06:10:47.603 に答える
0

ありがとう!

で解決...

        URL url = new URL("https://www.google.com/accounts/ClientLogin");

        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("POST");
        urlConnection.setDoInput(true);
        urlConnection.setDoOutput(true);
        urlConnection.setUseCaches(false);
        urlConnection.setRequestProperty("Content-Type",
                                         "application/x-www-form-urlencoded");

        StringBuilder content = new StringBuilder();
        content.append("Email=").append(URLEncoder.encode(_DEFAULT_USER, "UTF-8"));
        content.append("&Passwd=").append(URLEncoder.encode(_DEFAULT_PASS, "UTF-8"));
        content.append("&service=").append(URLEncoder.encode("ah", "UTF-8"));
        OutputStream outputStream = urlConnection.getOutputStream();
        outputStream.write(content.toString().getBytes("UTF-8"));
        outputStream.close();
        // Response....
        int responseCode = urlConnection.getResponseCode();
        InputStream inputStream;
        if (responseCode == HttpURLConnection.HTTP_OK) {
          inputStream = urlConnection.getInputStream();
        } else {
          inputStream = urlConnection.getErrorStream();
        }
于 2012-10-04T11:15:02.003 に答える