如何在谷歌应用程序引擎中从 twilio 帮助程序库创建调用

2023-12-14

我正在尝试使用 Google 应用程序引擎创建出站呼叫Twilio Java 帮助程序库

Example:

private void createcall(HttpServletRequest req, HttpServletResponse resp) {

    String ACCOUNT_SID = "AC69000ff19655ca86c5a4ae027b886665";
    String AUTH_TOKEN = "bef9594c1e7f542b6e331bd7e50077d0";
    try {

        TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID,
                AUTH_TOKEN);
        Map<String, String> params = new HashMap<String, String>();
        params.put("Url", "http://demo.twilio.com/docs/voice.xml");
        params.put("To", "+919460952623");
        params.put("From", "+13072241210");

        CallFactory factory = client.getAccount().getCallFactory();
        Call call = factory.create(params);
        TwilioCapability capability = new TwilioCapability(ACCOUNT_SID,AUTH_TOKEN);
        capability.allowClientOutgoing("APf5250942ec073c9d08848990cbc0ff5e");
        resp.getWriter().write(capability.generateToken());
    } catch (Exception e) {
        System.out.println(e.getLocalizedMessage());
        e.printStackTrace();
        log.warning(e.getLocalizedMessage());
    }
    // TODO Auto-generated method stub

}

该示例产生以下错误:

java.lang.NoSuchMethodError: sun.security.ssl.InputRecord.decrypt(Lsun/security/ssl/CipherBox;)V
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:871)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1169)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1196)
at sun.security.ssl.SSLSocketImpl.getSession(SSLSocketImpl.java:1920)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:91)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
at com.twilio.sdk.TwilioRestClient.request(TwilioRestClient.java:394)
at com.twilio.sdk.TwilioRestClient.safeRequest(TwilioRestClient.java:524)
at com.twilio.sdk.resource.list.CallList.create(CallList.java:68)
at cleanify.CleanifyServlet.createcall(CleanifyServlet.java:111)
at cleanify.CleanifyServlet.doPost(CleanifyServlet.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:57)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:439)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:483)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:490)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:777)
at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:754)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:345)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:337)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:487)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)

2013-07-09 23:14:33.848
Uncaught exception from servlet
java.lang.NoSuchMethodError: sun.security.ssl.InputRecord.decrypt(Lsun/security/ssl/CipherBox;)V
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:871)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1169)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1196)
at sun.security.ssl.SSLSocketImpl.getSession(SSLSocketImpl.java:1920)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:91)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
at com.twilio.sdk.TwilioRestClient.request(TwilioRestClient.java:394)
at com.twilio.sdk.TwilioRestClient.safeRequest(TwilioRestClient.java:524)
at com.twilio.sdk.resource.list.CallList.create(CallList.java:68)
at cleanify.CleanifyServlet.createcall(CleanifyServlet.java:111)
at cleanify.CleanifyServlet.doPost(CleanifyServlet.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:57)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:439)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:483)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:490)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:777)
at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:754)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:345)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:337)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:487)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)

我不知道问题是什么,因为计费也已启用。我正在根据谷歌应用程序引擎与 twilio 集成的文档做所有事情。

请帮我!!


显然 twilio lib 内部使用 Apache HttpClient,需要对其进行调整才能在 GAE 上使用:https://code.google.com/p/googleappengine/wiki/WillItPlayInJava#Apache

不确定您是否能够注射自己的ClientConnectionManager不过进入 Twillio lib 。

Update:

你可以实例化你自己的经过调整的 HttpClient使其在 GAE 上运行,然后将其注入 twilio lib:

twilioRestClient.setHttpclient(gaeHttpClient);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在谷歌应用程序引擎中从 twilio 帮助程序库创建调用 的相关文章

随机推荐

  • 与具有依赖关系的动态库链接

    考虑以下场景 共享库 libA so 没有依赖项 共享库 libB so 以 libA so 作为其依赖项 我想编译一个与 libB 链接的二进制文件 我应该仅将二进制文件与 libB 链接还是与 libA 链接 有没有办法只链接直接依赖项
  • 仅在有效文本选择的情况下启用 CKEditor 工具栏按钮?

    我正在开发一个 CKEditor 插件 用于注释文本和添加边距注释 但我希望仅当用户已经选择了一系列文本时才启用一些自定义工具栏按钮 每当用户打字或光标位于单个点 而不是范围 时 按钮 及其关联的命令 都应该被禁用 我是一位经验丰富的插件作
  • 导入错误:无法导入名称“Deque”

    我正在尝试在 Heroku 上托管我的 Discord py 机器人 当我的机器人启动时出现以下错误 2020 01 31T20 49 31 501236 00 00 heroku worker 1 State changed from s
  • 如何使用 git filter-repo 作为带有 Python 模块接口的库?

    我知道我在命令行中将 Python 代码作为字符串给出 例如 git filter repo name callback return name replace b Wiliam b William 但特别是当我进入更复杂的脚本时 这会变得
  • 无法加载库“libdl.so.2”

    我一直在尝试将 linux 编译的预构建共享库与我的 android jni 应用程序一起使用 但是当我尝试运行该应用程序时 它会出现以下错误 04 16 19 09 13 633 E dalvikvm 11810 dlopen data
  • 在原始类类型上忽略显式方法类型参数;编译器错误? [复制]

    这个问题在这里已经有答案了 我在调用具有显式类型参数的泛型方法时收到编译器错误 就好像未考虑显式类型参数一样 最小的例子 class CastExample static class ThingProducer
  • 多个 AND 条件 MySQL

    如何在一个子句中包含多个 AND 条件 喜欢SELECT FROM database WHERE x x y y AND z z我尝试过 但没有成功 谢谢 SELECT FROM table WHERE x x AND y y AND z
  • “人民币”货币符号的 HTML 标签是什么?

    什么 HTML 标签代表中国货币符号 或者有这样的标签吗 我猜你的意思是 的 HTML 实体 yen 方便的参考
  • 比较 bash 脚本中的数字

    我编写了这个脚本来比较 bash 中的 2 个数字 但它给了我一些数字的错误答案 就像如果我给它 2 2 作为输入 它会给我 X 大于 Y bin bash read num1 read num2 if num1 gt num2 then
  • 从 Nib 文件加载自定义表格视图单元

    我目前正在研究苹果文档中的一个示例 但在找到他们正在谈论的一些内容时遇到了一些麻烦 特别是在里面 仔细查看表格视图单元格 gt 从 Nib 文件加载自定义表格视图单元格 Here 我不确定需要设置哪个类 7 在nib文档窗口中选择File
  • 从 DatagridView 创建 Tiff 位图文件

    我想从 Datagridview 创建 Tiff 文件 我能够将 Datagridview 获取到 Tiff 文件 但我只想要行和列 而不需要其他任何东西 不使用第三方工具可以实现吗 Private Sub Form1 Load sende
  • 像钟摆一样旋转布局[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我可以像钟摆一样移动膨胀的布局或对话框或 另一种方式 等吗 膨胀布局包含一些图像视图和文
  • OKHTTP newCall() 调用 REST API 时挂起

    尝试使用 JAVA OKHttp 发布到restAPI 我的代码如下所示 try loggingInterceptor new HttpLoggingInterceptor loggingInterceptor setLevel HttpL
  • CSS - 即使没有足够的内容,也将页脚放在页面底部[重复]

    这个问题在这里已经有答案了 With HTML CSS 我需要得到footer被放置在bottom即使有页面no enough content 如果有大量内容导致滚动 则很容易实现这一点 当内容不足时就会出现问题 因为在这种情况下 页脚会上
  • 基于堆栈的机器依赖于基于寄存器的机器?

    普通 CPU 例如 Android 设备 是基于寄存器的机器 Java虚拟机是一个基于堆栈的机器 但是基于堆栈的机器是否依赖于基于寄存器的机器来工作 基于堆栈的机器不能孤独运行吗 因为它不是操作系统 除了 JVM 之外 还有其他基于堆栈的机
  • Jupyter Notebook:在上一行输出图像

    我想在我的 jupyter 笔记本中并排绘制一些图像 这样可以节省一些展示空间 例如 这是通过 fig plt figure figsize 14 3 ax1 fig add subplot 1 3 1 projection 3d ax2
  • 为什么在控制器上下文之外获取路由值如此困难?

    我不明白这背后是什么意思 为什么这么容易获取内部的路由值Request控制器但几乎不可能做同样的事情HttpContext Current Request 也许我只是不知道更好的方法 但它确实存在 有人可以确认这是在控制器外部获取路线数据的
  • 如何过滤与android room db的一对多关系

    我有一个用户实体和一个记录实体 我想要获取一个列表 其中显示所有用户及其按记录日期过滤的记录列表 然而 我陷入了无法用条件过滤结果的困境 def room version 2 2 5 implementation androidx room
  • matplotlib.pyplot 在相等范围内绘制 x 轴刻度

    我需要根据 x 值序列绘制 y 值序列 x 值在很大范围内变化 pyplot 似乎使用线性 x 轴 所以下面的代码给了我一个不好的数字 def bad plot x 1 2 10 100 1000 y 5 10 6 7 9 plt plot
  • 如何在谷歌应用程序引擎中从 twilio 帮助程序库创建调用

    我正在尝试使用 Google 应用程序引擎创建出站呼叫Twilio Java 帮助程序库 Example private void createcall HttpServletRequest req HttpServletResponse