2012-03-16 1 views
0

저는 이상한 행동을하고 있습니다. I는 POST 방법을 사용하여 서버에 HTTP 요청을 전송하도록 다음 코드를 사용RKClient POST 메서드 및 특수 문자

[[RKClient sharedClient] post:[NSString stringWithFormat:@"api"] 
          params:aDict 
         delegate:self]; 

값을 포함 사전은 다음과 같다 :

는 [self.textView 텍스트]
NSDictionary *comment = [NSDictionary dictionaryWithObjects:[NSArray 
arrayWithObjects:@"wallcomment", [self.wall 
valueForKey:@"wallMessageId"], [self.textView text], nil] 
                 forKeys: 
[NSArray arrayWithObjects:@"a01call", @"a01wall_message_id", 
@"a01comment", nil]]; 

때 악센트 서버와 프랑스어 단어로 채워 잘못 인코딩으로 나타납니다 : "테스트 @ 검증 caractères SPECIAUX"

을 내가 너무 게시입니다 인코딩하기 전에 텍스트 뷰의 텍스트를 조작하지 않습니다 또한 UTF8.

POST 헤더를 검사 할 때 content-type에 인코딩 유형이 없습니다. 다음 방법으로 추가하려고했지만 추가되지 않았습니다.

- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)header 

설명서에없는 특별한 방법이나 속성이 있습니까?

나는 0.9.3

+0

이것은 분명 할 수 있지만 * post *를 호출하기 전에 * setValue : forHTTPHeaderField : *를 호출해야합니다. 이 작업을 제대로 수행하면 RKClient.m의 216 행을 디버그하여 헤더가 어디 있는지 확인하십시오. – lawicko

+0

나는 Content-Type과 함께 UTF-8 인코딩을 추가하도록 setHTTPHeader 필드를 시도했지만 내용 유형이 application/x-www-form-urlencoded 인 헤더 값을 확인할 때 기억합니다. – Appsido

+0

중요한 정보는 여기 ** ** 게시물 *을 부르기 전에 ** 헤더를 설정합니까? 전에도, 여전히 설정되지 않았다면, 앞서 말한 것처럼 216 행을 디버그하십시오. – lawicko

답변

2

이를 수행 RestKit을 사용하고 있습니다 :

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"api" delegate:self block:^(RKObjectLoader *loader) { 
    [loader setAdditionalHTTPHeaders:[NSDictionary dictionaryWithObjectsAndKeys:@"application/x-www-form-urlencoded;charset=UTF-8", @"Content-Type", nil]]; 
}]; 

당신은 어떤 필요하면 다른 헤더를 추가하는 것을 잊지 마십시오.

RestKit 코드를 통해가는 동안 내가 발견 한 추가 것은, RKObjectManager 라인 (222) :

loader.method = RKRequestMethodGET; 

는 그래서 방법은 POST, GET하지 당신을 놀라게 할 수 없습니다. POST (실제로는 그렇지 않다고 생각하는)가 정말로 필요한 경우, 블록에서 메소드를 변경하십시오.