java.net.Exception socketexception: la réinitialisation de la Connexion Avec HTTPConnection

Je suis en train d'essayer de frapper une certaine API externe pour récupérer certaines données. Lorsque la taille des données est petit, tout fonctionne bien, mais lorsque la taille des données retournées par l'API est big-je obtenir la RÉINITIALISATION de la CONNEXION exception. Le code ci-dessous est à partir de la classe java InterfaceHelper et j'ai également marqué le commentaire en ligne pas où j'en suis arriver exception [Son tout en essayant de lire les données à partir de InputStream].

J'ai essayé de chercher sur ainsi beaucoup de question sur STACKOVERFLOW lui-même, mais n'a pas trouver une réponse appropriée. Donc merci de ne pas le marquer comme double question. Je veux savoir quelle est la raison derrière le problème et quelle est la bonne solution pour ce problème. Si vous trouvez cette question des doublons, merci de répondre avant le marquant comme en double. J'ose vous.

Trouver ci-dessous mon code que j'ai utilisé. URL de certains mannequin url que pour des raisons de sécurité je ne peux pas mentionner l'URL que j'ai utilisé.

 try{
        URL url = new URL("http://example.com/someParams/SOME-ACCESS-TOKEN");
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        connection.setRequestProperty("Content-Language", "en-US");
        connection.setRequestProperty("X-EXAMPLE-LOGIN", "XXXXXXXX");
        connection.setRequestProperty("X-EXAMPLE-PASSWORD", "XXXXXX");
        connection.setUseCaches(false);
        connection.setDoInput(true);
        connection.setDoOutput(true);
        DataInputStream input = new DataInputStream(connection.getInputStream());
        String  ret = "";
        if(input!=null){
            for( int c = input.read(); c != -1; c = input.read() ) { //InterfaceHelper.java:695
                ret = ret + String.valueOf((char)c);
            }
        }

         if(input!=null)
             input.close();
         if(connection!=null)
             connection.disconnect();

                if(ret!=null && ret.length()>0){
                    return ret;
                }

    }catch(Exception e) {
        e.printStackTrace();
    } 

Cette exception-je obtenir

        java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
at sun.security.ssl.InputRecord.readV3Record(InputRecord.java:554)
at sun.security.ssl.InputRecord.read(InputRecord.java:509)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at sun.net.www.http.ChunkedInputStream.fastRead(ChunkedInputStream.java:244)
at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:689)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3053)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3047)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3035)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at com.lsa.akosha.util.InterfaceHelper.hitApiBrandWatch(InterfaceHelper.java:695)
at com.lsa.akosha.service.brand.BrandCronService.brandSentiments(BrandCronService.java:288)
at com.lsa.akosha.util.thread.BrandWatchCronConverse.executeInternal(BrandWatchCronConverse.java:60)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
  • essayez de déboguer votre code et peut-être que vous trouverez votre problème
  • J'ai essayé, mais il jette toujours exception à la "DataInputStream input = new DataInputStream(connexion.getInputStream ());", mais dans l'impression trace de la pile de toujours montrer exception se produire tout en essayant de lire c'est à dire pour la boucle
  • Essayez ce code sur une autre machine (ou peut-être en le tournant d'anti-virus).
  • Le code que vous avez posté est impossible de produire ce stacktrace. Il est SSL dans la trace de la pile et un texte en clair URL HTTP. Et connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded" est aussi futile ici que vous n'êtes pas en soumettant du contenu. Ce n'est peut-être le code réel. NB connection et input ne peut pas être nulle au niveau des points, vous êtes à l'épreuve. Ne pas écrire futile tests.
InformationsquelleAutor Hitesh Kumar | 2014-12-02