2016-09-07 2 views
1

api 예제 here에서 예 Twilio java-sdk를 사용하여 Java Twilio 연결을 설정 중입니다.twilio 프록시 인증을 사용하는 Java 연결

유일한 차이점은 인증을 사용하여 웹 프록시 을 통해 내 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 클라이언트 웹 프록시 인증이 twilio 계정 SID 및 인증 토큰을 덮어 쓰고 있다고 의심하지만 확신이 없거나이 문제를 해결할 방법이 있는지 의심 스럽다.

나는 자신의 계정 SID와 인증 토큰을 세 번 검사했으며 또한 Twilio가 계정에 제공하는 "테스트"SID 및 인증 토큰을 사용하여 시도했지만 동일한 결과를 얻습니다.

웹 프록시를 통해 Twilio java-sdk를 실행하기위한 조언이 있습니까?

나는 아파치 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)); 

을 이것에 대해 몇 가지 질문이 있었지만 수락 된 답변이 없기 때문에 후손을 위해 여기에 남겨 두겠습니다.