0

URL を呼び出す次のコードがあります。http://10.105.0.120/24online/servlet/ClientRegistrationResponse?action=response&phone=919638983856&actioncode=0000

コード :

StringBuffer request=new StringBuffer();
             request.append(xml);
             URL url = new URL(url);
             HttpURLConnection obj = null;   
                obj = (HttpURLConnection)url.openConnection();  //create a SSL connection object server-to-server

                ((URLConnection)obj).setDoInput(true);
                ((URLConnection)obj).setDoOutput(true);
                ((URLConnection)obj).setUseCaches(false);
//              ((URLConnection)obj).setReadTimeout(10);
                ((URLConnection)obj).setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                obj.setRequestMethod("POST");
                obj.setRequestProperty("charset", "US-ASCII");
                //obj.setConnectTimeout(PropertyReader.IN_REQUEST_TIMEOUT);
                //obj.setReadTimeout(PropertyReader.IN_REQUEST_TIMEOUT);
                // Here the HTTPS request URL is created

                DataOutputStream dataoutputstream = new DataOutputStream(((URLConnection)obj).getOutputStream());
                dataoutputstream.writeBytes(request.toString());    //request
                //dataoutputstream.flush(); 
                dataoutputstream.close(); //connection closed
                BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(((URLConnection)obj).getInputStream()));
                String res = "";

                                while ( (res = bufferedreader.readLine()) != null ) {

                    conresponse += res;
                }
                bufferedreader.close();

しかし、私は次のエラーが発生しています:

java.io.IOException: Server returned HTTP response code: 500 for URL: http://10.105.0.120/24online/servlet/ClientRegistrationResponse?action=response&phone=919638983856&actioncode=0000
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1313)
    at cyberoam.corporate.integration.XMLSenderReceiver.sendFileData1(XMLSenderReceiver.java:70)
    at cyberoam.corporate.modes.TopupRequestThread.sendTopupRequest(TopupRequestThread.java:56)
    at cyberoam.corporate.modes.TopupRequestThread.run(TopupRequestThread.java:31)
org.jdom.input.JDOMParseException: Error on line -1: Premature end of file.
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:504)
    at cyberoam.corporate.integration.XMLProcessor.parseXML(XMLProcessor.java:392)
    at cyberoam.corporate.modes.TopupRequestThread.sendTopupRequest(TopupRequestThread.java:62)
    at cyberoam.corporate.modes.TopupRequestThread.run(TopupRequestThread.java:31)
Caused by: org.xml.sax.SAXParseException: Premature end of file.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489)
    ... 3 more
Caused by: org.xml.sax.SAXParseException: Premature end of file.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489)
    at cyberoam.corporate.integration.XMLProcessor.parseXML(XMLProcessor.java:392)
    at cyberoam.corporate.modes.TopupRequestThread.sendTopupRequest(TopupRequestThread.java:62)
    at cyberoam.corporate.modes.TopupRequestThread.run(TopupRequestThread.java:31)
Caused by: org.xml.sax.SAXParseException: Premature end of file.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489)
    at cyberoam.corporate.integration.XMLProcessor.parseXML(XMLProcessor.java:392)
    at cyberoam.corporate.modes.TopupRequestThread.sendTopupRequest(TopupRequestThread.java:62)
    at cyberoam.corporate.modes.TopupRequestThread.run(TopupRequestThread.java:31)
2012-07-12 18:52:49,416 - PIPE_COMM: In Receiving Object for /usr/local/nas/pipes/raam_to_gui_pipe
******************SMPPThread constructor called*****************

このエラーの理由は何ですか? ブラウザからURLを直接呼び出すと、完璧に機能します。

4

1 に答える 1

1

質問はありますか?

サーバーに不適切なリクエストを送信しましたが、サーバーは内部サーバー エラー (コード 500) で応答しています。論理的に行うべきことは、HTTP サーバーのログを確認することです (これは 10.* IP アドレスであるため、ローカルです)。

また、JDOM例外は別のスレッドか何かにあります....表示するコードにはJDOM関連のコードはなく、例外スタックトレースは500ステータス応答でIOExceptionにリンクされていません。または、ステータス 500 応答 (IOException) を無視し、同じスレッド内の JDOM コードがサーバーからの (おそらく空の) エラー応答を解析することを期待しています (これは間違いなく早期終了で終了します)。ファイル)。

必要がある:

  • サーバーログを確認してください
  • すべての例外を適切に処理する
  • サーバーに送信/サーバーから取得するデータを検査できるように、デバッグコードを追加する可能性があります。
于 2012-07-12T13:59:25.407 に答える