POST
에서 REST
으로 의 NSArray
이 NSDictionaries
인 서비스를 시도했습니다. 다른 서비스를 위해이 작업을 해왔지만 이상하게도 NSArray
은 NSDictionaries
입니다. 따라서 다른 경우에는 필요한 바로 가기를 작성하는 것이 매우 편리합니다. 그러나이 새로운 작업에 대해서는 단지 문제 일 뿐이라고 생각했습니다. 에 NSDictionaries
을 추가했지만 분명히 그렇지 않습니다. 'NSDictionaries의 NSArray를 Ruby 웹 서비스에 게시하기
if ([NSJSONSerialization isValidJSONObject:myDict])
{
myData = [NSJSONSerialization dataWithJSONObject:myDict options:0 error:&theErrorIfAny];
// Send to webservice (myData)
}
내가 돈 :
그런 다음myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"NFS", @"ticket[serie]",@"123",@"ticket[someID]",[NSArray arrayWithObject:[NSDictionary dictionaryWithObjectsAndKeys:@"99SKU1", @"product_id",@"1",@"quantity",nil]],@"lineItems",nil];
, 나는 준비에있는 NSData 객체로 변환하는 사전 URLConnection
overa을 보내 : 이것은 내가 그것을 보낼 준비에 원래의 객체를 생성하는 방법이다 t 루비 코드에 액세스 할 수 있지만 서버가 파일에 뱉어 로그 파일에 액세스 할 이것은 내가 무엇을 얻을 수 있습니다 :
{"ticket[serie]"=>"NFS"
"ticket[someID]"=>"123"
"lineItems"=>[{"product_id"=>"99SKU1","quantity"=>"1"}]
"ticket"=>{}}
모든 것이 그 여분의 리터를 제외하고 좋은 것 같다 ine : "ticket"=>{}
내가 여분의 빈 사전으로 요청을 채우는 것 같습니다. 난 이미 myDict에있는 하나의 항목을 제거하여이 요청을 시도했으며 중첩 된 NSArray
을 제거하고 그 중 NSDictionaries
은 여전히 요청의 끝에 "ticket"=>{}
줄을 볼 수 있습니다.
현재, webservice는 Ruby에서 수행되고 있으며 직접 액세스 할 수 없습니다. 나는 사람들에게 이렇게 말할 수는 있지만, 어깨를 으 sh하고 같은 전화를하지만 터미널에서 curl -d를 사용하면 ... 나는 서버로부터 올바른 응답을 얻을 것이라고 주장한다. 그래서 어쩌면 JSONSerialization
개체 또는 방법 내가 좋은 것 내 전화? 일부 검증 된 지식 소스에
+ (NSURLConnection *)postRequest:(NSData *)dataRequest toServerURL:(NSString *)serverURL onPort:(int)port withTimeOut:(NSTimeInterval)timeOut charSet:(char *)charset withDelegate:(id<NSURLConnectionDelegate>)myDelegate toServiceNamed:(NSString *)serviceName {
NSString *postDataLength = [NSString stringWithFormat:@"%d", [dataRequest length]];
DebugLog(@"bytes to send:%@", postDataLength);
NSMutableURLRequest *postRequest;
if (port == 0)
{
postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/%@", serverURL, serviceName]] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:timeOut];
}
else
{
postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@:%d/%@", serverURL, port, serviceName]] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:timeOut];
}
[postRequest setHTTPMethod:@"POST"];
[postRequest setValue:postDataLength forHTTPHeaderField:@"Content-Length"];
if (charset == nil || strcmp(charset, ""))
{
charset = "utf-8";
}
[postRequest setValue:[NSString stringWithFormat:@"application/json; charset=%s", charset] forHTTPHeaderField:@"Content-Type"];
[postRequest setHTTPBody:dataRequest];
return [[NSURLConnection alloc] initWithRequest:postRequest delegate:myDelegate];
}
어떤 의견이나 지점을 만드는거야 뭔가입니다.
당신이 "dataRequest"로그온 할 수 없습니다 : 명확히하기 위해
,이 요청이 (JSON 형식) 예상 어떻게? NSLog (@ "json :: % @ 요청", [NSString 할당] initWithBytes : dataRequest.bytes 길이 : dataRequest.length 인코딩 : NSUTF8StringEncoding]), – user1885297
확실히 ... 여기 있습니다 : 2012-12-20 09 : 47 : 47.942 JSONConfetti [92083 : c07] + [BMPOSTMessages postRequest : toServerURL : onPort : withTimeOut : charSet : withDelegate : toServiceNamed :] LINEA : 75 요청 json :: { "티켓 [serie]": "NFS", "lineItems ": [{"product_id ":"99SKU1 ","수량 ":"1 "}],"티켓 [someID] ":"123 "}> –