2016-09-07 17 views
1

APIの例hereの例のTwilio java-sdkを使用して、Java Twilio接続を設定しています。twilioプロキシ認証付きJava接続

唯一の違いは、認証のWebプロキシでTwilio接続を実行する必要があることです。

ウェブプロキシ経由でTwilioに接続することに関して他に質問がありますが、回答は受け付けていません。たとえばthisについて、その回答に基づいて、私はこのようなソリューションを実装しようとしている:

import com.twilio.sdk.TwilioRestClient; 
import com.twilio.sdk.TwilioRestException; 
import com.twilio.sdk.resource.factory.MessageFactory; 
import com.twilio.sdk.resource.instance.Message; 

import org.apache.http.HttpHost; 
import org.apache.http.NameValuePair; 
import org.apache.http.auth.AuthScope; 
import org.apache.http.auth.UsernamePasswordCredentials; 
import org.apache.http.client.CredentialsProvider; 
import org.apache.http.client.HttpClient; 
import org.apache.http.impl.client.BasicCredentialsProvider; 
import org.apache.http.impl.client.HttpClients; 
import org.apache.http.impl.conn.DefaultProxyRoutePlanner; 
import org.apache.http.message.BasicNameValuePair; 

import java.util.ArrayList; 
import java.util.List; 

public class Example { 

    // Find your Account Sid and Token at twilio.com/console 
    public static final String ACCOUNT_SID = "asdfasdfasdfdasf"; 
    public static final String AUTH_TOKEN = "asdfasdfasdfasdf"; 
    public static final String PROXY_ADDRESS = "1.2.3.4"; 
    public static final int  PROXY_PORT = 80; 
    public static final String PROXY_USER = "user"; 
    public static final String PROXY_PASSWORD = "password"; 

    public static void main(String[] args) { 

     //Set up Proxy host 
     HttpHost proxy = new HttpHost(PROXY_ADDRESS, PROXY_PORT); 
     DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy); 

     //Set up Proxy user credentials 
     CredentialsProvider credsProvider = new BasicCredentialsProvider(); 
     credsProvider.setCredentials(
       new AuthScope(PROXY_ADDRESS, PROXY_PORT), 
       new UsernamePasswordCredentials(PROXY_USER, PROXY_PASSWORD)); 

     //Set up HttpClient with proxy and credentials 
     CloseableHttpClient httpClient = HttpClients.custom() 
       .setRoutePlanner(routePlanner) 
       .setDefaultCredentialsProvider(credsProvider) 
       .build(); 


     TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN); 
     client.setHttpClient(httpClient); 


     // Build a filter for the MessageList 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("Body", "Hello from Java")); 
     params.add(new BasicNameValuePair("To", "+12345678901")); 
     params.add(new BasicNameValuePair("From", "+12345678901")); 

     MessageFactory messageFactory = client.getAccount().getMessageFactory(); 

     try { 
      Message message; 
      message = messageFactory.create(params); 
      System.out.println(message.getSid()); 

     } catch (TwilioRestException e) { 
      System.out.println(e.getErrorCode()); 
      System.out.println(e.getErrorMessage()); 
      e.printStackTrace(); 
     } 

    } 

} 

これはこれでプロキシ経由でそれを作るとTwilioのAPIに到達しているように見えるが、それは20003 errorたびに返します。

HTTPクライアントのWebプロキシ認証がtwilioアカウントのSIDと認証トークンを上書きしていると思われますが、わかりません。

私は自分のアカウントSIDと認証トークンをチェックしていますが、Twilioがアカウントにも提供している "テスト" SIDと認証トークンを使って試しましたが、同じ結果が得られます。

Webプロキシ経由でTwilio java-sdkを実行するためのアドバイスはありますか?

私は、Apache HTTPクライアントライブラリを使用しています4.5.2

答えて

1

解決しました...ただ、プロキシ資格情報の後api.twilio.comにスコープされた資格情報の別のセットを追加するために必要な:私は「

//Set up Proxy user credentials 
    CredentialsProvider credsProvider = new BasicCredentialsProvider(); 
    credsProvider.setCredentials(
      new AuthScope(PROXY_ADDRESS, PROXY_PORT), 
      new UsernamePasswordCredentials(PROXY_USER, PROXY_PASSWORD)); 

    //Set up Twilio user credentials 
    credsProvider.setCredentials(
      new AuthScope("api.twilio.com", 443), 
      new UsernamePasswordCredentials(ACCOUNT_SID, AUTH_TOKEN)); 

をこれについていくつかの質問がありましたが、受け入れられた回答がないので、後に残しておきます。

関連する問題