0
私はSwiftを初めて使用しており、Objective Cを知らない。この機能をSwiftに完全に変換したい。Objective-C POSTリクエストをSwiftに変換する
void post_req()
{
NSString *oper = @"99";
NSString *key = @"22";
NSString *query = @"22";
NSString *event_id = @"2";
NSError * error = nil;
NSString *myRequestString = [[NSString alloc] initWithFormat:@"operation=%@&key=%@&payload=%@", oper, key, query, event_id];
NSData *myRequestData = [ NSData dataWithBytes: [ myRequestString UTF8String ] length: [ myRequestString length ] ];
NSMutableURLRequest *request = [ [ NSMutableURLRequest alloc ] initWithURL: [ NSURL URLWithString:@"numbers"]];
[request setHTTPMethod: @"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[request setHTTPBody: myRequestData];
NSURLResponse *response;
NSError *err;
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
NSError *e = nil;
NSData *jData = [content dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:jData options: NSJSONReadingMutableContainers error: &e];
id<NSObject> value = JSON[@"response"];
NSLog(@"responseData: %@", JSON);
NSLog(@"payData: %@", value);
NSString* responseString = [[NSString alloc] initWithData:returnData encoding:NSNonLossyASCIIStringEncoding];
if ([content isEqualToString:responseString])
{
NSLog(@"responseData: %@", content);
}
これまで私がこれまで行ってきたことです。正常に動作していません。
func post_req() {
let oper = "99"
let key = "22"
let query = "22"
let event_id = "10"
var error : NSError?
let urlString = "http://numbers"
let url = NSURL(string: urlString)!
let request = NSMutableURLRequest(URL: url)
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var myRequestString = NSString(format: "operation=%@&key=%@&payload=%@", oper, key, query, event_id)
var myRequestData = NSData(bytes: myRequestString.UTF8String, length: myRequestString.length)
//request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField:"content-type")
request.HTTPBody = myRequestData
let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
var content = String(data: data!, encoding: NSUTF8StringEncoding)!
var jData = content.dataUsingEncoding(NSUTF8StringEncoding)
do {
let JSON = try NSJSONSerialization.JSONObjectWithData(jData!, options: .MutableContainers)
print("responseData: %@", JSON)
} catch {
print("error")
}
print("responseData: %@", content)
})
task.resume()
}
私は問題はエンコーディングで、リクエストの終了時で発生していると思いますが、私はちょうどすべての詳細を含めるようにしたかったです。
ありがとうございますが、これは動作しません。私の要求と同じエラーが返されます。これはレスポンスです:{ステータスコード:500、ヘッダ{ "Content-Type" = "text/html"; 日付= "Wed、2020年3月30日20:18:10 GMT"; サーバー= localhost; "Transfer-Encoding" =アイデンティティ。 }}) – fishinthesea