2016-05-17 1 views
0

Drive.Files.Create APIを使用してファイルをアップロードしようとしています。それはうまくいきましたが、10-15の要求の後で突然SocketTimeOut Exceptionを取得しました。Drive.Files.Create.execute()java.net.SocketTimeoutException

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

例外のStackTrace:

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) 

使用限度:

クエリ

要求/日20

10億ののrequ 100秒/ユーザー1,000

任意のアイデア?

答えて

0

SocketTimeoutException: Read timed outは、接続タイムアウトを定義するか、タイムアウトバリアを調整してネットワーク遅延に対して柔軟に対応することで解決できます。それ以外にも、私が知る限り、この種のエラーはネットワーク接続の問題であり、プログラミング上の問題ではないため、ネットワークの遅延の原因を調べることができます。

このようなエラーの詳細については、java.net.SocketTimeoutException – How to Solve SocketTimeoutExceptionに掲載されています。この投稿はGetting java.net.SocketTimeoutException: Connection timed out in androidでも役に立ちます。事以下

0

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(); 
を働きました
関連する問題