मैं क्रम में निम्न कोड स्निपेट का उपयोग किया है अब तक भेजने और JSON तार प्राप्त करने के लिए:भेजा जा रहा है UTF-8 स्ट्रिंग का उपयोग HttpURLConnection
static private String sendJson(String json,String url){
HttpClient httpClient = new DefaultHttpClient();
String responseString = "";
try {
HttpPost request = new HttpPost(url);
StringEntity params =new StringEntity(json, "UTF-8");
request.addHeader("content-type", "application/json");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
responseString = EntityUtils.toString(entity, "UTF-8");
}catch (Exception ex) {
ex.printStackTrace();
// handle exception here
} finally {
httpClient.getConnectionManager().shutdown();
}
return responseString;
}
कोड के ऊपर का पूर्ण काम किया है, भले ही json स्ट्रिंग निहित UTF-8 चार्स, और सब कुछ ठीक काम किया।
कई कारणों से मुझे HTTP पोस्ट अनुरोध भेजने के तरीके को बदलना पड़ा और इसके बजाय Apache's HttpClient के HttpURLConnection का उपयोग करना पड़ा। यहाँ मेरी कोड है:
static private String sendJson(String json,String url){
String responseString = "";
try {
URL m_url = new URL(url);
HttpURLConnection conn = (HttpURLConnection)m_url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("content-type", "application/json");
DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
outputStream.writeBytes(json);
outputStream.flush();
outputStream.close();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
responseString = sb.toString();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return responseString;
}
इस कोड को सामान्य अंग्रेजी अक्षर के लिए अच्छी तरह से काम करता है, लेकिन json स्ट्रिंग में UTF-8 वर्णों का समर्थन करते प्रतीत नहीं होता है, क्योंकि यह हर बार विफल रहता है। (सर्वर पर जेसन भेजते समय, सर्वर यह कहता है कि utf8 एक निश्चित बाइट को डीकोड नहीं कर सकता है, लेकिन सर्वर से utf8 json प्राप्त करने पर मुझे लगता है कि यह काम करता है क्योंकि मैं विशेष वर्णों को देखने में कामयाब हूं)।
सर्वर बिल्कुल नहीं बदला और पिछले कोड के साथ ठीक काम किया, इसलिए समस्या इस नए कोड स्निपेट पर 100% है।
कोई विचार है कि जेसन स्ट्रिंग को कैसे ठीक किया जाए, तो यह यूटीएफ 8 का समर्थन करेगा? धन्यवाद
बिल्कुल सही। आपका धन्यवाद और आपका दिन शुभ रहे। – Jjang