开发者

How can I confirm that an HTTP POST calls my code?

I'm trying to retrieve data from a POST method, code as follows:

-(void)postXMLFeed:(NSString *)XMLStrPost
{   
    //NSLog (@"XML Feed3: ", XMLStrPost);

    NSURL *url = [NSURL URLWithString:@"http://xxx.xxx.x.xxx/stephen/sync_upload.php"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:[XMLStrPost dataUsingEncoding:NSASCIIStringEncoding]];

    NSURLResponse *response;
    NSError *error;
    response = [NSURLConnectio开发者_C百科n sendSynchronousRequest:request returningResponse:&response error:&error];


    // Update log file.
    NSLog(@"XML feed POSTED to website.");

    //[super postXMLFeed];
}

My XML feed is stored in the variable XMLStrPost. The above code seems to work but I have no way of confirming it.

The script should unparse the string and write it to a database, but this does not seem to be happening. Before the unparse takes place I want to confirm that script is being called.

How can I confirm that sync_upload.php script is called?


You're misusing the API. +[NSURLConnection sendSynchronousRequest:returningResponse:error] returns an NSData object, which is the body of the response. You're assigning it into an NSURLResponse object, which means you're not only breaking the type system (you should be getting a warning when compiling), but you're also losing the pointer to the NSURLResponse that the connection gave you.

It's like you're shooting yourself twice in the foot with one bullet... ("Shooting two feet with one bullet"?)


Before you even get too deep here, let me seize the opportunity to recommend the All-Seeing Interactive HTTP library, at http://allseeing-i.com/ASIHTTPRequest/. Makes ALL your HTTP interactions vastly simpler.

That said, if you get your NSLog() call in the console, then the synchronous connection you're creating there has returned. You're not testing whether it returned with a failure of some type, though. If I were you, I'd NSLog myself some of the elements of your response object. But again, using ASIHTTP will allow you to ask the request object lots of good questions about its state.


Check if your log file shows an entry from the NSLog call.


Is it returning anything back to the device when it's done? I'd probably send back something that denotes success or failure from the script for you to read on the iPhone in the response variable.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜