2015-10-01 15 views
9

मेरे वर्तमान एंड्रॉइड प्रोजेक्ट में मैं अपने वेब सर्वर पर कुछ डेटा रीट्रोफिट 2.0 लाइब्रेरी के साथ भेज रहा हूं। मैं केवल वहां एक स्क्रिप्ट चलाने के लिए चाहता हूं और सर्वर कुछ भी वापस नहीं करता है। मैंने सोचा कि मैं इस विधि के साथ ऐसा कर सकते हैं: अबप्रतिक्रिया के बिना रेट्रोफिट 2.0 विधि

@POST("persons/insert.php") 
Call<Void> insert(@Field("Name") String name); 

मेरे समस्या है, कि रेट्रोफिट onFailure विधि करने के लिए कूदता है, हालांकि सर्वर की ओर 200 होता है ऐसा इसलिए है क्योंकि कुछ भी नहीं Void में बदला जा सकता। तो मुझे इस विधि को कैसे ठीक करना चाहिए? मैं चाहता हूं कि onResponse विधि को कॉल किया गया है यदि सर्वर 200 बार और onFailure भेजता है यदि कोई त्रुटि हुई है। मैं उसे कैसे प्राप्त कर सकता हूं?

उत्तर

19

आप इसे ResponseBody वापस कर सकते हैं।

@POST("persons/insert.php") 
Call<ResponseBody> insert(@Field("Name") String name); 

तुम अब भी onResponse और onFailure मिल जाएगा, लेकिन यह एक वस्तु को धारा deserialize करने की कोशिश नहीं करेंगे।

+0

ग्रेट धन्यवाद! मेरी समस्या के लिए बिल्कुल सही जवाब। – Cilenco

2

आप प्रतिक्रिया शरीर से पूरी तरह से बच सकते हैं। बीटा 2 में, आप प्रतिक्रिया शरीर को त्यागने के लिए Call<Void> कर सकते हैं और केवल http स्थिति कोड प्राप्त कर सकते हैं।

@POST("persons/insert.php") 
Call<Void> insert(@Field("Name") String name); 
संबंधित मुद्दे