Saya mencoba mengirim data logging dari applet pemindaian dokumen ke server web yang didukung Django.
Saya sedang menguji menggunakan server web Django sendiri. Saya telah membuat permintaan POST sederhana dengan Java, tetapi server Django menimbulkan kesalahan 500. Saya tidak dapat memperoleh informasi apa pun mengenai kesalahan tersebut. Sepertinya saya tidak bisa menggunakan pydevd untuk memecahkan kode dalam tampilan Django saya (url saya disetel dengan benar - saya dapat menelusuri kode jika saya membuka url dengan browser). Saya tidak memiliki pengaturan debugging pada applet saya, tetapi saya memiliki banyak informasi yang masuk ke konsol. Saya tahu bahwa Django mengirimkan banyak info html bersama dengan kesalahan 500, tetapi applet Java saya melemparkan pengecualian (sebagai respons terhadap kesalahan 500), sebelum ia dapat membaca pesannya.
Ini kode di applet saya -
private boolean log(String scanURL) {
try {
String data = "log=" + buffer.toString();
URL url = new URL(scanURL);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(data);
writer.flush();
// Handle the response
int responseCode = ((HttpURLConnection) conn).getResponseCode();
addItem("Http response code " + new Integer(responseCode).toString());
addItem("creating BufferedReader");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
addItem("reading response");
while ((line = reader.readLine()) != null) {
addItem(line);
}
addItem("Closing Writer");
writer.close();
addItem("Closing Reader");
reader.close();
if (responseCode == 200) {
return true;
}
else {
return false;
}
} catch (Exception e) {
addItem("Error - writing to log failed. " + e);
return false;
}
}
Dan tampilan Django saya saat ini -
from django.http import HttpResponse
from django.contrib.auth.decorators import login_required
from cache.shortcuts import permission_required
@login_required
@permission_required('documents.add_documentindex', raise_exception=True)
def save_log(request):
import pydevd;pydevd.settrace()
log_text = request.POST['log']
with open("scanning.log", "a") as f:
f.write(log_text)
return HttpResponse('ok')
Saya kira saya perlu melakukan beberapa pekerjaan pada header http, tetapi tanpa sedikit info lebih lanjut dari Django, pengetahuan saya tentang http adalah cacat besar.
Saran apa pun agar ini berfungsi, atau bahkan mendapatkan lebih banyak informasi tentang kesalahan 500 server Django akan sangat dihargai!
UPDATE Stacktrace dari pengecualian Java adalah sebagai berikut
java.io.IOException: Server returned HTTP response code: 500 for URL: http://10.0.0.68:8000/scanning_log
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at co.altcom.cache.scanner.CacheScan.log(CacheScan.java:408)
at co.altcom.cache.scanner.CacheScan.createLog(CacheScan.java:385)
at co.altcom.cache.scanner.CacheScan.destroy(CacheScan.java:70)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://10.0.0.68:8000/scanning_log
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at co.altcom.cache.scanner.CacheScan.log(CacheScan.java:405)
... 4 more
"Error - writing to log failed." + e
Uh-huh?.. Berpura-puralah kami tidak melihat komputer Anda dan pertimbangkan untuk menambahkane.printStackTrace();
dan salin/tempel hasilnya. - person Andrew Thompson   schedule 29.08.2012creating BufferedReader
- di manakah tepatnya hal itu muncul? Yang manakah baris 405 dariCacheScan.java
? - person Andrew Thompson   schedule 29.08.2012