2011-09-01 5 views
5

मैं एएसआई पेज here में दिए गए निर्देशों का उपयोग कर रहा हूं। मैं कुछ डेटा वेब सेवा में भेजने की कोशिश कर रहा हूं और कोई परिणाम नहीं देख रहा हूं।आईओएस में वेब सेवा में डेटा पोस्ट करने के लिए मैं एएसआई एचटीपी का उपयोग कैसे करूं?

यह मेरा sendRequest तरीका है जिसके viewDidLoad

-(void)sendRequest { 
    NSURL *url = [NSURL URLWithString:@"http://153.60.6.75:8080/BarcodePayment/transactions"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request addRequestHeader:@"Accept" value:@"application/json"]; 
    [request addRequestHeader:@"Content-Type" value:@"application/json"]; 
    NSString *dataContent = @"{\"id\":7,\"amount\":7.0,\"paid\":true}"; 
    NSLog(@"dataContent: %@", dataContent); 
    [request appendPostData:[dataContent dataUsingEncoding:NSUTF8StringEncoding]]; 
    [request setRequestMethod:@"POST"]; 
} 

में बुलाया जाता है मैं dataContent स्ट्रिंग की जाँच करें और उत्पादन

{"id":7,"amount":7.0,"paid":true} 

है अगर मैं टर्मिनल से कर्ल का उपयोग करें, मैं जाँच की और इस आदेश को काम करता है ।

curl -X POST -H 'Accept:application/json' -H 'Content-Type: application/json' http://153.60.6.75:8080/BarcodePayment/transactions/ --data '{"id":7,"amount":7.0,"paid":true}' 

मेरे समझ कर्ल का उपयोग करने में, मैं इसे json करने के लिए सेट है कि, डेटा जो मेरे कोड में dataContent के बराबर है निर्दिष्ट करते हैं, पता निर्दिष्ट है। कुछ नहीं हुआ। क्या गलत है?

सहायता के लिए धन्यवाद!

[request setDelegate: self]; 
[request startAsynchronous]; 

या::

उत्तर

3

आप बहुत है अनुरोध को शुरू करने के लिए सबसे महत्वपूर्ण घटक को छोड़कर बहुत कुछ सब कुछ

आपको 0 जोड़ने की आवश्यकता है एक अतुल्यकालिक अनुरोध के लिए एक तुल्यकालिक अनुरोध या [requester startAsynchronous]; के लिए(और आप संभवतः प्रतिनिधि के तरीके कोई जवाब आपके वापस आने को संभालने की ज़रूरत)

यह सब बहुत ASIHTTPRequest How to Use Guide में अच्छी तरह से कवर किया जाता है। इसके लिए सबसे प्रासंगिक अनुभाग 'एक तुल्यकालिक अनुरोध बनाना' और 'एक अतुल्यकालिक अनुरोध बनाना' होगा। इसके अलावा के बारे में उस पृष्ठ से लिया लगता है कि कुछ करने के लिए:

सामान्य तौर पर, आप सिंक्रोनस अनुरोध वरीयता में अतुल्यकालिक अनुरोध का उपयोग करना चाहिए। जब आप मुख्य थ्रेड से ASIHTTPRequest को सिंक्रनाइज़ करते हैं, तो आपके एप्लिकेशन का यूजर इंटरफेस लॉक हो जाएगा और अनुरोध की अवधि के लिए अनुपयोगी हो जाएगा।

2

आप कॉल करने के लिए भूल गया

[request startSynchronous]; 

आप इनमें से किसी को फोन नहीं है, तो अनुरोध किया कभी नहीं की जाएगी :)

1

मैं [request startSynchronous] (या [request startAsynchronous]) अपने कोड में करने के लिए एक फोन नहीं दिख रहा है ... तुम भी अनुरोध कहीं भी की शुरुआत कर रहे हैं?

1

ऐसा लगता है कि आप कैसे

1

उपयोग करने के लिए आप वास्तव में अनुरोध नहीं भेज रहे हैं के बारे में अधिक जानकारी के लिए फोन नहीं किया [request startAsynchronous];

चेक ASIHTTPRequest documentation

1) आप कॉल करने के लिए [अनुरोध startSynchronous] या [अनुरोध startAsynchronous] की आवश्यकता होगी

2) यदि आप अतुल्यकालिक (जो आप शायद करना चाहिए) का उपयोग करते हैं आप प्रतिनिधि सेट और एक को लागू करने की आवश्यकता होगी - (शून्य) अनुरोध समाप्त: (ASIHTTPRequest *) अनुरोध विधि।

0
- (void)postThresholdDetails:(NSDictionary *)info 

{ NSString * urlString = [NSString stringWithFormat: @ "% @% @ /", baseurl, PostThresholdDetails]; NSURL * url = [NSURL URLWithString: urlString];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setRequestMethod:@"POST"]; 
[request setDelegate:self]; 
[request setTimeOutSeconds:120]; 
[request addRequestHeader:@"Accept" value:@"application/json"]; 
[request addRequestHeader:@"content-type" value:@"application/x-www-form-urlencoded"]; 
request.allowCompressedResponse = NO; 
request.useCookiePersistence = NO; 
request.shouldCompressRequestBody = NO; 
[request setPostBody:[NSMutableData dataWithData: [info objectForKey:@"jsondata"] ]]; 
[request startAsynchronous]; 

}

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

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