XMLRPC from iOS App New Post

I am trying to add ability to my app to post a new article to a wordpress blog. I know that WordPress has the XMLRPC, but I am having issues in implementing the wp.newPost as there is little documentation outside of Ruby PHP or JAVA.

Here is what I have in my app:

Read More
-(IBAction)postNews {
    NSURL *xmlrpcURL = [NSURL URLWithString:@"https://myurl.wordpress.com/xmlrpc.php"];
    NSString *username = @"email@yahoo.com";
    NSString *password = @"password";
    NSString *title = @"Test";
    NSString *content = @"This is a test of posting to the news section from the app.";

    NSString *myRequestString = [NSString stringWithFormat:@"username=%@&password=%@&content=%@", username, password, title];

    // Create Data from request
    NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: xmlrpcURL];
    // set Request Type
    [request setHTTPMethod: @"POST"];
    // Set content-type
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
    // Set Request Body
    [request setHTTPBody: myRequestData];
    // Now send a request and get Response
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
    // Log Response
    NSString *response = [[NSString alloc] initWithBytes:[returnData bytes] length:[returnData length] encoding:NSUTF8StringEncoding];
    NSLog(@"%@",response);


}

I constantly get the response:

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value><int>-32700</int></value>
        </member>
        <member>
          <name>faultString</name>
          <value><string>parse error. not well formed</string></value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>

What am I doing wrong with this?

Related posts

Leave a Reply

3 comments

  1. Ok, for those trying to do this, documentation for Obj-C is fairly difficult to find, but here is what I did. I first imported the XMLRPC Starter Kit from here. Next, in my app I defined the server username and password as it suggests, and in my action I used both an NSDictionary and NSArray for the post to go through. Again, this is for a simple text post to a wordpress blog.

    NSString *server = kWordpressBaseURL;
        XMLRPCRequest *reqFRC = [[XMLRPCRequest alloc] initWithHost:[NSURL URLWithString:server]];
        NSDictionary* filter = @{
                                 @"post_type": @"post",
                                 @"post_status": @"publish",
                                 @"post_title": @"Test Title",
                                 @"post_content": @"Test Content",
                                };
        NSArray *postParams = @[ @0, kWordpressUserName, kWordpressPassword, filter, @[@"post_title"]];    [reqFRC setMethod:@"wp.newPost" withObjects:postParams];
    
        //The result for this method is a string so we know to send it into a NSString when making the call.
        NSString *result = [self executeXMLRPCRequest:reqFRC];
    
        [reqFRC release]; //Release the request
    
        //Basic error checking
        if( ![result isKindOfClass:[NSString class]] ) //error occured.
    
        NSLog(@"demo.sayHello Response: %@", result);
    

    Obviously, you can have text fields that you pull from for your blog post content, but this worked great!

  2. U can add new posts using xmlrpc as given code

    XMLRPCRequest *req = [[XMLRPCRequest alloc] initWithURL:[NSURL URLWithString:@”your url name”]];

    NSArray *yourparameter = @[@0,@”your user id”,@”your password”];

    [request setMethod:@”wp.newPost” withParameters:yourparameter];

    XMLRPCResponse *saveRessponse = [XMLRPCConnection sendSynchronousXMLRPCRequest:req error:nil];

    NSLog(@”The Response is%@”,[saveRessponse object]);

  3. You can add new post using xml-rpc as

    XMLRPCRequest *reqFRC = [[XMLRPCRequest alloc] initWithURL:[NSURL URLWithString:@"your url name"]];
    

    // Set your url here.

     NSArray *params = @[@0,@"your user id",@"your password"]; 
    

    // Add your url parameters here.

    [request setMethod:@"wp.newPost" withParameters:params]; // To add new post.
    
    XMLRPCResponse *nodeSaveRessponse = [XMLRPCConnection sendSynchronousXMLRPCRequest:request error:nil];
    
    NSLog(@"server response :%@",[nodeSaveRessponse object]);