私はplayのWebアプリケーションを開発していますが、これはGoogle App Engineにデプロイされるはずです。応答を処理する以外のサーバーに要求を送信しようとしています。私のlocalhostにはが完全に動作しますが、ですが、GAEでテストすると難しいです。コードは以下の通りです:Google App Engineからのリクエストの送信
import com.google.appengine.repackaged.org.apache.http.HttpResponse;
import com.google.appengine.repackaged.org.apache.http.client.methods.HttpGet;
import com.google.appengine.repackaged.org.apache.http.conn.scheme.PlainSocketFactory;
import com.google.appengine.repackaged.org.apache.http.conn.scheme.Scheme;
import com.google.appengine.repackaged.org.apache.http.conn.scheme.SchemeRegistry;
import com.google.appengine.repackaged.org.apache.http.impl.client.DefaultHttpClient;
import com.google.appengine.repackaged.org.apache.http.impl.conn.SingleClientConnManager;
import com.google.appengine.repackaged.org.apache.http.params.BasicHttpParams;
public class Getter{
public static byte[] getStuff(){
String urlString = "http://example.com/item?param=xy";
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
BasicHttpParams params = new BasicHttpParams();
SingleClientConnManager connmgr = new SingleClientConnManager(params, schemeRegistry);
DefaultHttpClient client = new DefaultHttpClient(connmgr, params);
HttpGet get = new HttpGet(urlString);
byte[] buf = null;
try {
HttpResponse resp = client.execute(get);
buf = new byte[(int) resp.getEntity().getContentLength()];
resp.getEntity().getContent().read(buf);
} catch (Exception e) {
System.out.println("There was a problem.");
e.printStackTrace();
}
return buf;
}
}
悲しい事は、私が)(e.printStackTraceで任意のエラーメッセージが出ていないということです;. GAEではログに「問題がありました」と表示されます。私は研究後に多くの実装を試みましたが、それらのいずれかを実行することができませんでした。 何か助けていただければ幸いです。
これは素晴らしいです!どうもありがとうございました。あなたはそのデータから応答コンテンツを抽出する方法を知っていますか?内容の中には絵があり、私はその方法から戻るだけでよい。 –
もう一度、GoogleのURLFetchサイトのURLFetchドキュメントに記載されています。私は上記の答えにいくつかのコードを追加しました。 – jmort253