オンラインの PHP スクリプトと通信する Java アプリケーションを作成しようとしています。私のアプリケーションは、データを受信するために 1 つのリクエストを作成し、それを処理してスクリプトに別のリクエストを作成します。ただし、最初の要求でclose()
、OutputStreamWriter
、BufferedReader
を実行しても、2 番目の要求はまったく機能しません。HttpsUrlConnection
何よりも先に送信するので、機能していないという要求ではないことはわかっています。機能します! また、2 番目のリクエストを含むメソッドが実行中であることもわかっています。これが私が今持っているものの基本です:
try{
URL url = new URL("https://mysite.com/script.php");
HttpsUrlConnection conn = (HttpsUrlConnection) url.openConnection()
conn.setDoInput(true); conn.setDoOutput(true);
String request = URLEncoder.encode("request_type", "UTF-8) + "=" + URLEncoder.encode("first", "UTF-8);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(request);
writer.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String response;
while((response = in.readLine()) != null){
if(response.equals("firstresponse")){
in.close(); writer.close();
conn.disconnect();
makeSecondRequest();}
}
}catch(Exception e){}
public void makeSecondRequest(){
URL url = new URL("https://mysite.com/script.php");
HttpsUrlConnection conn = (HttpsUrlConnection) url.openConnection()
conn.setDoInput(true); conn.setDoOutput(true);
String request = URLEncoder.encode("request_type", "UTF-8) + "=" + URLEncoder.encode("second", "UTF-8);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(request);
writer.flush();
}
したがって、これをどのように行うべきか/なぜ機能しないのかを誰かが知っている場合は、できるだけ早く教えていただければ幸いです...
前もって感謝します
更新:コードの一部にステートメントを
追加e.printStackTrace()
したところ、次のメッセージが表示されました。catch
makeSecondRequest()
java.lang.IllegalStateException: Already connected
at java.net.URLConnection.setDoOutput(URLConnection.java:909)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.setDoOutput(HttpsURLConnectionImpl.java:454)
at engines.LicenceManagement.sendFingerprint(LicenceManagement.java:193)
at engines.LicenceManagement.verifyOnline(LicenceManagement.java:147)
at engines.LicenceManagement.actionPerformed(LicenceManagement.java:541)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)