【问题标题】:Drive.Files.Create.execute() java.net.SocketTimeoutExceptionDrive.Files.Create.execute() java.net.SocketTimeoutException
【发布时间】:2016-05-17 11:14:35
【问题描述】:

我正在尝试使用 Drive.Files.Create api 上传文件。它运行良好,但在 10-15 请求后突然出现 SocketTimeOut 异常。

drive = new Drive.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName(
              APPLICATION_NAME).build();
Drive.Files.Create insert = drive.files().create(fileMetadata, mediaContent);
insert.setUseContentAsIndexableText(true);
File f=insert.execute();

异常堆栈跟踪:

Exception in thread "main" java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    at java.net.SocketInputStream.read(SocketInputStream.java:170)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
    at sun.security.ssl.InputRecord.read(InputRecord.java:503)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
    at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:930)
    at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:704)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1536)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
    at com.google.api.client.http.javanet.NetHttpResponse.<init>(NetHttpResponse.java:37)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:94)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
    at com.google.api.client.googleapis.media.MediaHttpUploader.executeCurrentRequestWithoutGZip(MediaHttpUploader.java:545)
    at com.google.api.client.googleapis.media.MediaHttpUploader.resumableUpload(MediaHttpUploader.java:417)
    at com.google.api.client.googleapis.media.MediaHttpUploader.upload(MediaHttpUploader.java:336)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:427)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
    at com.ob.pdfparser.MyClass.uploadFile(MyClass.java:42)
    at com.ob.pdfparser.MyClass.main(MyClass.java:91)

使用限制:

查询

请求/天 1,000,000,000 的第 20 天

请求数/100 秒/用户 1,000

有什么想法吗??

【问题讨论】:

    标签: java google-drive-api google-oauth


    【解决方案1】:

    下面的东西起作用了

        Drive drive = new Drive.Builder(this.httpTransport, this.jsonFactory, this.credential).setHttpRequestInitializer(new HttpRequestInitializer() {@Override
                public void initialize(HttpRequest httpRequest) throws IOException {
    
                    credential.initialize(httpRequest);
                    httpRequest.setConnectTimeout(300 * 60000);  // 300 minutes connect timeout
                    httpRequest.setReadTimeout(300 * 60000);  // 300 minutes read timeout
    }
    }).setApplicationName("My Application").build();
    

    【讨论】:

      【解决方案2】:

      SocketTimeoutException: Read timed out 可以通过定义连接超时或调整超时屏障来解决,以便在网络延迟上更加灵活。除此之外,您还可以检查导致网络延迟的原因,因为据我所知,这种错误是网络连接问题而不是编程问题。

      可以在java.net.SocketTimeoutException – How to Solve SocketTimeoutException 中找到有关此类错误的完整说明,此 SO 帖子 - Getting java.net.SocketTimeoutException: Connection timed out in android 也可能有所帮助。

      【讨论】:

        猜你喜欢
        • 2016-07-23
        • 2016-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        • 1970-01-01
        • 2011-01-29
        • 1970-01-01
        相关资源
        最近更新 更多