मैं HTTP पोस्ट का उपयोग कर फ़ाइल अपलोड करने के लिए नीचे कोड का उपयोग कर रहा हूं, लेकिन मुझे सर्वर से 500 आंतरिक सर्वर त्रुटि प्रतिक्रिया मिल रही है।500 HTTP POST अनुरोध से आंतरिक त्रुटि
क्या आप कृपया एक नज़र डालें और मुझे बताएं कि कौन सा कोड भाग अपराधी/गायब है। एचटीटीपीएस कनेक्शन में कोई त्रुटि नहीं है, मुझे लगता है कि हेडर में कुछ समस्या है इसलिए सर्वर इस अनुरोध को स्वीकार नहीं कर रहा है।
// Check server address
url = new URL("https://example.com");
String protocol = url.getProtocol();
String host = url.getHost();
String serviceRoot = url.getPath();
// Build POST request
HttpPost post = new HttpPost(new URI(protocol + "://" + host
+ serviceRoot));
post.addHeader("User-Agent", "Test");
post.addHeader("Content-type", "multipart/form-data");
post.addHeader("Accept", "image/jpg");
String authValue = "Basic "
+ Base64
.encodeBase64ToString(("username" + ":"
+ "password").getBytes()) + " " + "realm=\"example.com\"";
if (authValue != null) {
post.addHeader("Authorization", authValue);
}
File file = new File("/sdcard/Download/IMAG0306.jpg");
FileBody data = new FileBody(file);
String file_type = "jpg" ;
String description = "Test";
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("file_name", new StringBody(file.getName()));
reqEntity.addPart("description", new StringBody(description));
reqEntity.addPart("file_type", new StringBody(file_type));
reqEntity.addPart("data", data);
post.setEntity(reqEntity);
if (true) {
String trace = ">>> Send HTTP request:";
trace += "\n " + post.getMethod() + " "
+ post.getRequestLine().getUri();
System.out.println(trace);
}
if (true) {
String trace = "<<< Send HTTP request-->:";
trace += "\n" + post.toString();
Header[] headers = post.getAllHeaders();
for (Header header : headers) {
trace += "\n" + header.getName() + " " + header.getValue();
}
System.out.println(trace);
}
HttpClient httpClient = createHttpClient();
// replace with your url
// “Authorization”, “Basic ” + encodedUsernamePassword);
if (httpClient != null) {
response = httpClient.execute(post);
if (true) {
String trace = "<<< Receive HTTP response:";
trace += "\n" + response.getStatusLine().toString();
Header[] headers = response.getAllHeaders();
for (Header header : headers) {
trace += "\n" + header.getName() + " " + header.getValue();
}
System.out.println(trace);
}
} else {
throw new IOException("HTTP client not found");
}
धन्यवाद
अपने सर्वर लॉगफाइल पर एक नज़र डालें। 500 एक आंतरिक सर्वर त्रुटि है। तो आपको वहां समाधान मिलना चाहिए। – Jens
500 एक सर्वर साइड त्रुटि है, आप एक ही सटीक पैरा के साथ http rest क्लाइंट (उदाहरण के लिए डाकिया, ब्राउज़र एक्सटेंशन) में अपने अनुरोध का परीक्षण कर सकते हैं, यह एक ही परिणाम के साथ खत्म हो जाएगा। – Mostrapotski
मेरा शिकार यह है कि आपका अनुरोध MaxRequestLen से अधिक है, जो आमतौर पर 131072 बाइट्स है, आप यह देखने के लिए एक छोटी फ़ाइल के साथ प्रयास कर सकते हैं कि यह काम करता है, लेकिन अनुरोध करने के दौरान आपके सर्वर त्रुटि लॉग को पूरी तरह से सुनिश्चित करने के लिए। tail -f /var/log/apache2/error.log –