2012-04-29 11 views
4

私はApp Engine上でTwilioのJavaクライアントライブラリを使用しようとしています。これはそのままでは実行されず、クライアントlibにいくつかの変更が必要になります。私は、次の変更を行っているが、動作しません:App Engine上のTwilioクライアントライブラリ

public TwilioRestClient(String accountSid, String authToken, String endpoint) { 

    validateAccountSid(accountSid); 
    validateAuthToken(authToken); 

    this.accountSid = accountSid; 
    this.authToken = authToken; 

    if ((endpoint != null) && (!endpoint.equals(""))) { 
     this.endpoint = endpoint; 
    } 



/* origial code 
* ThreadSafeClientConnManager connMgr = new ThreadSafeClientConnManager(); 
*  connMgr.setDefaultMaxPerRoute(10); 
*  this.httpclient = new DefaultHttpClient(connMgr); 
*/ 

//my changes start HERE 
    SchemeRegistry schemeRegistry = new SchemeRegistry(); 
    schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
    BasicHttpParams params = new BasicHttpParams(); 

    ThreadSafeClientConnManager connMgr = new ThreadSafeClientConnManager(params,schemeRegistry); 
    //my changes END HERE 

    this.httpclient = new DefaultHttpClient(); 

    httpclient.getParams().setParameter("http.protocol.version", 
      HttpVersion.HTTP_1_1); 
    httpclient.getParams().setParameter("http.socket.timeout", 
      new Integer(CONNECTION_TIMEOUT)); 
    httpclient.getParams().setParameter("http.connection.timeout", 
      new Integer(CONNECTION_TIMEOUT)); 
    httpclient.getParams().setParameter("http.protocol.content-charset", 
      "UTF-8"); 

    this.authAccount = new Account(this); 
    this.authAccount.setSid(this.accountSid); 
    this.authAccount.setAuthToken(this.authToken); 

} 

これは、コンパイルして実行するためにそれを取得し、しかし、私はこの例外を取得:スキーム「HTTPS」ではない: によって引き起こさ:org.apache.http.HttpExceptionを登録された要求が行われたときは です。要求は次の(変更されていない)コードにあります:

twilioでjavaにappengineを使用しているのはありますか?基本認証を使用するXMLまたはJSONのRESTful要求であることはわかっています。私は、クライアントライブラリを使用して、自分自身をコーディングするリクエストを行う時間を費やすことを望んでいた...任意のアイデア?

答えて

3

最新のTwilio Javaクライアントライブラリは、appengine(Apache HttpClient)でうまく動作しない外部ライブラリに依存します。 TwilioのオリジナルのJavaクライアントコードはjava.net.HttpURLConnectionを使用しただけで、外部の依存関係はありませんでした。

これまでのTwilio Javaクライアントコードをtwilio4jに追加しました(いくつかのバグ修正があります)。私は生産でそれを使用しています。

TODO:appendine friendlyである公式twilio-javaプロジェクトにパッチを提供する必要があります。

1

基本的な問題は、Twilio-JavaがTwilioのサーバーに接続するためにApache HttpClientを使用していて、すぐに使用でき、Google AppEngineと互換性がないということです。

Apache HttpClient on Google AppEngineを使用することができます。 get the source codeにして、それらの指示に従ってTwilio-Javaクライアントライブラリを変更する必要があります。