当前位置: 首页 > 知识库问答 >
问题:

带代理身份验证的twilio java连接

袁运良
2023-03-14

我正在使用api示例中的示例Twilio java-sdk设置java Twilio连接。

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();
        }

    }

}

对于通过web代理运行Twilio java-sdk有什么建议吗?

我使用的是apache http-client library 4.5.2

共有1个答案

公孙联
2023-03-14

解决了...只需在代理凭据之后添加另一组范围为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));

我将把这个留给后代,因为有几个关于这个的问题,但没有公认的答案。

 类似资料:
  • 问题内容: 问题: 如何向OkHTTP添加授权代理。 我知道OkHTTP的生成器确实支持代理,尽管我很难设置一个代理。 我有IP /端口/用户名/密码。 尽管我不知道如何将其转换为client.SetProxy()中可以使用的那些。 这似乎过于复杂,我似乎无法弄清楚。任何帮助,将不胜感激。 问题答案: 试试这个:

  • 问题内容: 我一直在尝试使用Apaches HttpComponent的httpclient时从配置的属性中配置用于代理身份验证的用户和密码,但是没有成功。我发现的所有示例都引用了不再可用的方法和类,例如和。 因此,谁能给我一个有关如何配置代理凭据的示例? 问题答案: 对于Basic-Auth,它看起来像这样: 开箱即用不支持AFAIK NTLM。但是您也许可以使用过载来管理它。

  • 问题内容: 我想将具有基本身份验证(用户名,密码)的代理用于Java中的连接(并且仅此连接)。以下代码适用于HTTP URL(例如“ http://www.google.com ”): 但是,该代码不适用于HTTPS URL(例如“ https://www.google.com ”)!我收到的时候我尝试访问HTTPS URL。 此代码适用于HTTP和HTTPS: 第二个代码的问题在于它设置了一个新

  • 我在这方面看到了很多解决方案。我尝试了建议的命令eval 然后添加键 如何解决这个问题。在Mac上真的很新。

  • 我知道Fiddler支持Kerberos,所以我的想法是把打嗝链到Fiddler上。我首先确保我可以在Fiddler中使用篡改(使用此链接作为指南)。然后我将Fiddler设置为Burp的上游代理,但是当我在Burp中篡改一个请求时,在发出请求时仍然得到一个未经授权的401。 关于如何让Burp进行Kerberos身份验证,还有其他想法吗?