Twilio Lookup API没有在java

时间:2016-03-14 22:11:36

标签: twilio

作为我们项目的一部分,我们需要致电Twilio以获取电话号码的E164格式。为了做到这一点,我按照以下步骤来实现。如果电话号码有效,则下面的步骤正在运行,但是如果电话号码无效且我们将其传递给Twillo,那么它不会返回任何内容并停止该过程。

我知道下面提到的数字无效,但这并不意味着当我尝试使用无效数字进行查找时,它不会返回任何响应。它应该至少返回一个错误,但实际上它不会让我更加困惑。我正在尝试使用IBM websphere服务器。

有人可以帮我修复这个问题,或者有什么办法可以为twilio查找设置请求超时,这样如果twilio查找失败,它将允许其他进程继续。另外,如果我在编码twilio查找时遇到任何错误,请纠正我。

Sample URL "https://lookups.twilio.com/v1/PhoneNumbers/phoneNumber"

Steps Followed:
LookupsClient client = new LookupsClient(ACCOUNT_SID, AUTH_TOKEN);
client.setHttpClient(getProxyClient());

// Twilio Lookup with country code
String twilioURL = createURL(phoneNumber, countryCd);
String twilioE164Number = getTwilioNumber(client, twilioURL);

//Twilio Lookup without country code 
StringBuilder appender = new StringBuilder();
appender.append(TWILIO_URL);
appender.append(PLUS);
appender.append(phoneNumber);
String twilioE164Number = getTwilioNumber(client, appender.toString());

//Create lookup URL
private String createURL(String phoneNumber, String countryCode){

        StringBuilder appender = new StringBuilder();
        appender.append(phoneNumber);
        appender.append(QUERY_PARAM);
        appender.append(countryCode);
        return TWILIO_URL+appender.toString();
}

//Get Twilio E164 Number
private String getTwilioNumber(LookupsClient client,String url){
        TwilioRestResponse response;
        String twilioResult = "";
        try {
            response = client.get(url);
                       String str = response.getResponseText();
                       //Code for parsing the JSON response and set the twilioResult.
                } catch (TwilioRestException e) {
            logger.error("TwilioRestException while calling twilio "+e);
        }catch(Exception ex){
            logger.error("Error in twilio Calling "+ex);
        }
        return twilioResult;
    }

//Get proxy client to set.
private HttpClient getProxyClient() {
        HttpHost proxy = new HttpHost(PROXY_HOST, PROXY_PORT);
        //new DefaultHttpClient().getParams().setParameter(arg0, arg1)
        DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),new UsernamePasswordCredentials(ACCOUNT_SID, AUTH_TOKEN));
        CloseableHttpClient httpClient = HttpClients.custom()
                .setRoutePlanner(routePlanner)
                .setDefaultCredentialsProvider(credentialsProvider)
                .build();
        return httpClient;

    }

1 个答案:

答案 0 :(得分:2)

v6.3.0的twilio-java有一个LookupsClient.getPhoneNumber()方法,允许您传递电话号码,而不是要求您从头开始构建URL。使用LookupsClient而不是vanilla TwilioClient的重点是该类为您完成大部分工作。

在这种情况下你试过client.getPhoneNumber(phoneNumber)吗? This page还演示了使用该特定端点时应该收到的响应结构。 E164格式的电话号码应该是响应中的phone_number属性,虽然我使用twilio-python并且我不知道Java库如何公开响应对象以供您使用。

如果您没有得到回复,您可能希望在没有代理配置的情况下尝试发出相同的请求,以确保代理不会导致问题。至于你的超时问题,twilio-java的请求是同步处理的,一种解决方法就是在异步方法调用中包装请求。

希望其中一些可以帮助您诊断问题!