2013-01-17 18 views
8

में GET शैली अनुरोध के रूप में क्रमबद्ध किया जा रहा है, मैं बस RestKit 0.20.0 के साथ शुरू कर रहा हूं और मुझे एक अच्छी तरह से स्वरूपित JSON अनुरोध बनाने में समस्या हो रही है।RestKit 0.20 JSON ऑब्जेक्ट को POST body

मैं इस (बाकी किट लॉग से) मिलती है:

request.body=title=A%20glorious%20walk%20in%20the%20woods&startDateTime=2013-01-13%2016%3A09%3A33%20%2B0000&endDateTime=2013-01-13%2016%3A09%3A43%20%2B0000&points[][longitude]=-122.0307725&points[][latitude]=37.3310798&points[][longitude]=-122.0307334&points[][latitude]=37.33154242&points[][longitude]=-122.03075743&points[][latitude]=37.33138305&points[][longitude]=-122.03075659&points[][latitude]=37.33131185&points[][longitude]=-122.03057969&points[][latitude]=37.33156519&points[][longitude]=-122.03075535&points[][latitude]=37.33144466&points[][longitude]=-122.03076342&points[][latitude]=37.33123666&points[][longitude]=-122.03074488&points[][latitude]=37.33149482&points[][longitude]=-122.03068145&points[][latitude]=37.33155419&points[][longitude]=-122.03062909&points[][latitude]=37.33156564&points[][longitude]=-122.03076853&points[][latitude]=37.33115792 

जब मैं इस (कर्ली कोष्ठक के साथ सामान्य json वस्तु और अंक संपत्ति के लिए एक सरणी) हैं:

{ 
    title: "Something", 
    startDateTime: "dateinfo", 
    endDateTime: "moredateinfo", 
    points: [ 
     { 
      latitude: "37.33131313", 
      longitude: "122.4325454" 
     }, 
     { 
      latitude: "37.33131313", 
      longitude: "122.4325454" 
     } 
    ] 
} 

मेरे पास है दो मुख्य ऑब्जेक्ट्स: डीएलपॉक ऑब्जेक्ट्स के एनएसएससेट की तुलना में एक डीएलवॉक (वे कोरडाटा ऑब्जेक्ट्स हैं, लेकिन फिलहाल मैं इसे अनदेखा कर रहा हूं और केवल HTTP अनुरोध बनाने पर ध्यान केंद्रित कर रहा हूं)

यहां सी है स्तोत्र मैं अपने अनुरोध बनाने के लिए उपयोग कर रहा हूँ:

// Point mapping 
RKObjectMapping *mappingPoint = [RKObjectMapping requestMapping]; 
[mappingPoint addAttributeMappingsFromArray:@[@"latitude", @"longitude"]]; 
RKRequestDescriptor *reqDescPoint = [RKRequestDescriptor requestDescriptorWithMapping:mappingPoint objectClass:[DLPoint class] rootKeyPath:nil]; 

// Walk mapping 
RKObjectMapping *mappingWalk = [RKObjectMapping requestMapping]; 
[mappingWalk addAttributeMappingsFromArray:@[@"endDateTime", @"startDateTime", @"title"]]; 
RKRequestDescriptor *reqDescWalk = [RKRequestDescriptor requestDescriptorWithMapping:mappingWalk objectClass:[DLWalk class] rootKeyPath:nil]; 


// Define the relationship mapping 
[mappingWalk addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"points" toKeyPath:@"points" withMapping:mappingPoint]]; 

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://192.168.1.10:8080"]]; 
          [manager addRequestDescriptor:reqDescWalk]; 
          [manager addRequestDescriptor:reqDescPoint]; 
          [manager addResponseDescriptor:responseDescriptor]; 

// POST to create 
[manager postObject:walk path:@"/walk/save" parameters:nil success:nil failure:nil]; 

तो सवाल यह है: क्यों मैं अपनी पोस्ट शरीर में एक सामान्य लग रही JSON ऑब्जेक्ट नहीं मिल रहा है?

उत्तर

14

आपको अनुरोध के रूप में क्या मिलता है। कोई URL-एन्कोडेड है, जो डिफ़ॉल्ट व्यवहार को रीस्टकिट करता है और आमतौर पर ठीक काम करता है।

आप इसे JSON एन्कोड होना चाहते हैं, तो बस इस पर अधिक जानकारी के लिए क्वेरी

manager.requestSerializationMIMEType=RKMIMETypeJSON; 

पोस्ट करने से पहले इस लाइन डालने, RKObjectManager वर्ग के लिए API दस्तावेज़ों में वहाँ एक नजर है: requestSerializationMIMEType

+0

इतना आसान, विश्वास नहीं कर सकता कि मुझे याद आया! धन्यवाद! – codemonkey

संबंधित मुद्दे