के साथ एचटीपी क्लाइंट JSON पोस्ट मैं URL पर एक साधारण JSON पोस्ट को कार्यान्वित करने की कोशिश कर रहा हूं जो एंड्रॉइड पर मूल प्रमाणीकरण के साथ जेएसओएन को शरीर में स्वीकार करता है।एंड्रॉइड - मूल प्रमाणीकरण
मैंने HttpUrlConnection
के साथ प्रयास किया है लेकिन मुझे "अनधिकृत" मिलता है और मेरा डेटा सर्वर पर भेजता है।
मैंने कोशिश की एक और तरीका HttpClient
का उपयोग कर रहा है, लेकिन अब मुझे एक अलग समस्या है। प्रमाणीकरण सही काम करता है लेकिन डेटा सर्वर पर नहीं भेजा जाता है ...
बस यह सुनिश्चित करने के लिए, मैंने एक साधारण जावा प्रोजेक्ट (एंड्रॉइड पर्यावरण नहीं) में एक छोटा परीक्षण स्थापित किया है।
DefaultHttpClient httpClient = new DefaultHttpClient();
ResponseHandler<String> resonseHandler = new BasicResponseHandler();
HttpPost postMethod = new HttpPost("http://localhost/api/v1/purchase/");
postMethod.setEntity(new StringEntity("{\"amount_adult\" : 1, \"object_id\" : 13}"));
postMethod.setHeader("Content-Type", "application/json");
String authorizationString = "Basic " + Base64.encodeToString(("travelbuddy" + ":" + "travelbuddy").getBytes(), Base64.DEFAULT); //this line is diffe
postMethod.setHeader("Authorization", authorizationString);
String response = httpClient.execute(postMethod,resonseHandler);
System.out.println("response :" + response);
जावा परियोजना में कोड सही काम करता है:
इस कोड है कि मैं सर्वर पर पोस्ट करने का उपयोग कर रहा है।
जब मैं एंड्रॉइड में सटीक कोड का प्रयास करता हूं, तो मुझे सर्वर से internal server error
मिलता है, जिसका अर्थ है कि JSON डेटा प्राप्त नहीं हुआ है।
मुझे वास्तव में समझ में नहीं आता कि यह जावा में क्यों काम कर रहा है लेकिन एंड्रॉइड में नहीं।
curl --dump-header - -H "Content-Type: application/json" -X
POST --data '{"amount_adult":1, "object_id":13}'
--user travelbuddy:travelbuddy http://localhost/api/v1/purchase/
अपने जवाब के लिए धन्यवाद, मैं सिर्फ इस कोड को "स्थानीय होस्ट" में दिखाया गया है, वास्तव में मैं डोमेन का पूरा पथ का उपयोग करें। – user1674948
आपके अपने बिंदु से, क्या सर्वर पर JSON बॉडी पोस्ट करने का यह सही तरीका है? शायद यह सिर्फ एक एमुलेटर है जो काम नहीं कर रहा है? – user1674948
आपका कोड सही है। यदि आप एम्यूलेटर में परीक्षण कर रहे हैं, तो इसके बजाय आईपी एड्रेस 10.0.2.2 का उपयोग करें। Http://developer.android.com/tools/devices/emulator.html#networkaddresses देखें। – secondflying