POST Requests

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • POST Requests

    Hallo,

    bisher bau ich mir POST Requests so zusammen:

    Quellcode

    1. NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    2. NSData *requestData = [[NSString stringWithFormat:@"user=test&pass=test"] dataUsingEncoding:NSUTF8StringEncoding];
    3. [request setHTTPMethod:@"POST"];
    4. [request setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"];
    5. [request setValue:@"application/atom+xml" forHTTPHeaderField:@"Content-Type"];
    6. [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
    7. [request setValue:auth forHTTPHeaderField:@"Authorization"];
    8. [request setHTTPBody: requestData];
    9. NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    10. [connection start];
    Alles anzeigen


    Wie kann kann ich diese XML als POST senden?

    Quellcode

    1. POST /feeds/api/videos/VIDEO_ID/ratings
    2. Host: gdata.youtube.com
    3. Content-Type: application/atom+xml
    4. Content-Length: CONTENT_LENGTH
    5. Authorization: Bearer ACCESS_TOKEN
    6. GData-Version: 2
    7. X-GData-Key: key=DEVELOPER_KEY
    8. <?xml version="1.0" encoding="UTF-8"?>
    9. <entry xmlns="http://www.w3.org/2005/Atom"
    10. xmlns:yt="http://gdata.youtube.com/schemas/2007">
    11. <yt:rating value="like"/>
    12. </entry>
    Alles anzeigen
  • Wenn ich den Request so sende, bekomme ich einen 401 Nicht identifiziert von der API zurück. Ich weiß nur nicht ob das an meinem Code oder an der API liegt:

    Quellcode

    1. NSURL *url = [NSURL URLWithString:@"https://gdata.youtube.com/feeds/api/videos/qguHjLWwBlc/ratings"];
    2. NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    3. NSString *developerKey = @"XXXXXX";
    4. NSData *requestData = [[NSString stringWithFormat:@"yt:rating=like"] dataUsingEncoding:NSUTF8StringEncoding];
    5. [request setHTTPMethod:@"POST"];
    6. [request setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"];
    7. [request setValue:@"application/atom+xml" forHTTPHeaderField:@"Content-Type"];
    8. [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
    9. [request setValue:auth forHTTPHeaderField:@"Authorization"];
    10. [request setHTTPBody: requestData];
    11. NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    12. [connection start];
    Alles anzeigen
  • Ja, das hier ist die gesamte Methode:

    Quellcode

    1. NSURL *url = [NSURL URLWithString:@"https://gdata.youtube.com/feeds/api/videos/qguHjLWwBlc/ratings"];
    2. NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    3. NSString *developerKey = @"XXXX-XXX";
    4. NSData *requestData = [[NSString stringWithFormat:@"yt:rating=like&key=%@", developerKey] dataUsingEncoding:NSUTF8StringEncoding];
    5. [request setHTTPMethod:@"POST"];
    6. [request setValue:@"text/html,application/atom+xml,application/xml;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"];
    7. [request setValue:@"application/atom+xml" forHTTPHeaderField:@"Content-Type"];
    8. [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
    9. [request setValue:auth forHTTPHeaderField:@"Authorization"];
    10. [request setValue:[NSString stringWithFormat:@"%@", developerKey] forHTTPHeaderField:@"X-GData-Key"];
    11. //[request setValue:[NSString stringWithFormat:@"key=%@", developerKey] forHTTPHeaderField:@"X-GData-Key"];
    12. [request setValue:@"2" forHTTPHeaderField:@"GData-Version"];
    13. [request setHTTPBody: requestData];
    14. NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    15. [connection start];
    Alles anzeigen