I'm trying to call a Google Service in a GAE application hosted in GAE cloud:
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...
}
The execution throws: com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'remote_socket' or call 'Resolve()' was not found
.
Any ideas? I'm totally lost...
API package 'remote_socket' or call 'Resolve()' was not found means that InetAddress has been requested to do a name resolution and the undelying API (remote_socket.Resolve) was not found.
The remote_socket API is enabled as part of the trusted tester program for sockets.
Anyhow, your issue is that we don't yet support the resolution of IP addresses (other than localhost etc) in the app engine runtime.
The recommendation to using the urlfetch api directly is one work-around.
Can you use a different http client? Such as recommended here:
Or what about using the URLFetchService?
According to this blog post you need a:
Thanks!
Solved with...