小编Azi*_*uts的帖子

Gmail REST API:400错误请求+失败的前提条件

我正在尝试使用google java api服务发送基于Gmail REST API的邮件.我已通过Google Develover Console配置了应用程序客户端并下载了p12和json文件.

我使用过这个示例程序,https://developers.google.com/gmail/api/guides/sending#sending_messages ...

此示例有效,但这是基于GoogleAuthorizationCodeFlow.我只想从服务器到服务器工作,直接调用,而不是打开浏览器来获取访问令牌......我得到了它(访问令牌)但最后我收到了错误请求....为什么? ?我收到的信息不仅仅是"Bad Request"和"Precondition Failed"

基于此,我按照以下步骤操作:

  1. 第一步:根据我的客户帐户邮件和p12生成的文件创建GoogleCredential对象:

    GoogleCredential  credential = new GoogleCredential.Builder().setTransport(new NetHttpTransport())
                                        .setJsonFactory(new JacksonFactory())
                                        .setServiceAccountId(serviceAccountUserEmail)
                                        .setServiceAccountScopes(scopes)
                                        .setServiceAccountPrivateKeyFromP12File(
                                                    new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))                             
                                                            .build();
    
    Run Code Online (Sandbox Code Playgroud)

在这里,我必须指出,我有很多问题需要使用ClientID而不是ClientMail.它必须使用@ developer.gserviceaccount.com帐户而不是.apps.googleusercontent.com.如果你不发送这个参数确定,你得到一个"无效授予"错误.这在此处说明:https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtAuthorization

  1. 第二步:根据凭据创建Gmail服务:

    Gmail gmailService = new Gmail.Builder(httpTransport,
                                                  jsonFactory,
                                                  credential)
                                                .setApplicationName(APP_NAME)
                                                    .build();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 第三步从MimmeMessage创建Google原始消息:

    private static Message _createMessageWithEmail(final MimeMessage email) throws MessagingException, IOException {
    
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    email.writeTo(bytes);
    String encodedEmail =       Base64.encodeBase64URLSafeString(bytes.toByteArray());      
    Message message = new Message();    
    message.setRaw(encodedEmail);
    return message;
    
    Run Code Online (Sandbox Code Playgroud)

    }

  3. 第四步调 …

java rest google-cloud-endpoints gmail-api

12
推荐指数
1
解决办法
1万
查看次数

Weblogic 12c:Jersey的首选web-inf-classes和prefer-application-packages

我必须 在Weblogic 12c服务器(12.2.1)上使用两者(奇怪的是......)" prefer-web-inf-classes "和" web- to -application-packages"的weblogic.xml属性

它是基于Jersey 1.9的REST应用程序.*(Jersey 1.x JAX-RS RI)和Guice.

1.为什么要使用:prefer-web-inf-classes

如果你有多个WAR,你必须在war/lib的级别放置guice-jersey/guice的库,否则你会得到Multibindings Error.

它必须表明prefer-web-inf-classes为true. 这种方式正常!我试图以相同的方式使用prefer-application-packages和package(com.sun.jersey.guice.spi.container.servlet /com.google.inject.servlet等等),但没办法.

注意:无法在EAR级别排除此库.

2.为什么要使用:prefer-application-packages

要在Weblogic 12c(12.2.1)上使用Jersey 1.x JAX-RS RI,所以我必须指出以下包(Weblogic使用Jersey 2的其他方式,以及不同版本的Jackson库等)

如果以这种方式表示,它在Jersey 1.X上完美运行..我已分别探讨了两场战争,并且工作得很好......但是,请记住我的朋友我有两场战争......所以....

摘要

我不能同时使用这两个属性(在weblogic.xml上使用这两个属性部署错误..),但它需要:

  1. 对于Guice Filter的问题,需要将prefer-web-inf-classes设置为true,以便在war-lib级别使用guice-servlet.jar/jersey-guice.jar.
  2. 要使用Jersey 1.x,需要使用..... prefer-application-package

问题:如何将两者结合使用其中之一?

java guice guice-servlet weblogic12c jersey-1.0

7
推荐指数
1
解决办法
9747
查看次数

GMail REST API:使用没有模拟的Google凭据

是否可以在不使用模拟的情况下使用Google Credentials for GMAIL REST API?

在GMAIL REST API的许多示例中,我看到必须使用与域和Google APPS关联的模拟帐户.我只想使用GMAIL REST API api服务器到服务器:

FE:

GoogleCredential  credential = new GoogleCredential.Builder().setTransport(httpTransport)
            .setJsonFactory(jsonFactory)
                         .setServiceAccountId(serviceAccountUserEmail)
                         **.setServiceAccountUser("myuser@mydomain.com)**
                         .setServiceAccountScopes(SCOPES)
                         .setServiceAccountPrivateKeyFromP12File(
                         new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))                                
                        .build();
Run Code Online (Sandbox Code Playgroud)

问题是,我没有任何域名,我只使用GMAIL帐户...但我没有任何方式授权,例如:MyMainGmailAcccoun@gmail.com

servive acccount id 4xxxxxxxxxxxxxq@developer.gserviceaccount.com";是使用MyMainGmailAcccoun@gmail.com创建的" 客户帐户"

这没有任何意义,我不想冒充其他域名的其他帐户,我也没有任何办法来authozize MyMainGmailAcccoun@gmail.com.

只是有效,如果您有一个帐户来冒充与Google Apps相关的其他域名,并获得Google Apps ...您需要一个域名.

任何建议?

java email rest google-apps gmail-api

5
推荐指数
1
解决办法
3264
查看次数

TLS 1.2 + Java 1.6 + BouncyCastle

为了支持通过 Java 1.6 API 到使用 TLS 1.2 的远程主机的 HTTPS 连接,我们开发了一个基于 Bouncy Castle Libraries (v. 1.53) 的定制 TLS SocketConnection 工厂

它非常易于使用,只需:

        String httpsURL =  xxxxxxxxxx
        URL myurl = new URL(httpsURL);      
        HttpsURLConnection  con = (HttpsURLConnection )myurl.openConnection();
        con.setSSLSocketFactory(new TSLSocketConnectionFactory());   
        InputStream ins = con.getInputStream();
Run Code Online (Sandbox Code Playgroud)

在测试期间,我连接了暴露在SSLabs 测试中的不同 Web 和远程主机

这在 90% 的情况下都能正常工作!但在某些情况下,我们会收到令人讨厌的错误:“内部 TLS 错误,这可能是一次攻击”。已经检查没有攻击。这是基于内部 BouncyCastle 异常处理的常见错误。我正在尝试为那些运气不佳的远程主机找到一个通用模式。

更新:

更新一些代码以获取额外信息,我们得到:

org.bouncycastle.crypto.tls.TlsFatalAlert: illegal_parameter(47)
    at org.bouncycastle.crypto.tls.AbstractTlsClient.checkForUnexpectedServerExtension(AbstractTlsClient.java:56)
    at org.bouncycastle.crypto.tls.AbstractTlsClient.processServerExtensions(AbstractTlsClient.java:207)
    at org.bouncycastle.crypto.tls.TlsClientProtocol.receiveServerHelloMessage(TlsClientProtocol.java:773)
Run Code Online (Sandbox Code Playgroud)

我得到的扩展类型是这样的:

扩展类型:11 扩展数据:

根据 ExtensionType 类,“ec_point_formats”。这会导致“UnexpectedServerExtension”-->“UnexpectedServerExtension”导致--> TlsFatalAlert:非法参数,最后这是一个“内部TLS错误,这可能是一次攻击”

任何建议记录或跟踪这个奇怪的 TLS 错误....???? 正如我所说,这段代码可以工作 90%...但是对于一些远程主机,我得到了这个错误

诀窍在于覆盖 startHandShake …

java ssl bouncycastle tls1.2

5
推荐指数
1
解决办法
1万
查看次数

Hazelcast REST API

我无法使用Hazelcast的REST API,总是接收:

  1. 在客户端:ERR_EMPTY_RESPONSE通过浏览器java.net.SocketException: Unexpected end of file from server通过Java测试程序.
  2. 在hazelcast节点:

    INFO: [myIP]:5701 [dev] [3.6] Established socket connection between /127.0.0.1:5701 and /127.0.0.1:62816
    06-may-2016 13:04:20 com.hazelcast.nio.tcp.TcpIpConnection
    INFO: [myIP]:5701 [dev] [3.6] Connection [/127.0.0.1:62816] lost. Reason: Socket explicitly closed
    
    Run Code Online (Sandbox Code Playgroud)

使用过的代码只是hazaelcast multimap示例: 和REST API uri http:// localhost:5701/hazelcast/rest/maps/my-distributed-map/key

java rest hazelcast

5
推荐指数
1
解决办法
4452
查看次数

Cloud Foundry:通过Manifest.yml设置环境变量

我的问题很简单

有什么方法可以通过Manifest.yml * 设置环境变量而无需 *运行vmc命令set-env [应用程序名称]键=值

在Amazon上,可以使用.ebextension文件执行以下操作

* option_settings:-命名空间:aws:elasticbeanstalk:容器:tomcat:JVMOPTIONS

     option_name:JVM选项

     值:=值-DKEY *

我也想设置此变量,而不使用vmc从Eclipse部署应用程序

我的战争

       src

       清单文件

或类似的东西。

我设法通过set-env vmc命令来实现,但是在使用Eclipse插件时,当您删除或删除应用程序变量时,它会消失,这是非常不舒服的。

因此,理想的是在manifest.yml ....中设置这些变量,但我无法获取或不提供正确的语法。

谢谢。

tomcat environment-variables jvm-arguments cloud-foundry

1
推荐指数
1
解决办法
3813
查看次数