2014-07-17 4 views
0

Arduino 용 iPhone 앱을 만들었습니다. 기본적으로 Arduino는 타사 REST API에서 제공하는 아주 기본적인 명령을 사용하여 로컬 네트워크를 통해 통신 할 수 있습니다. 내 컴퓨터 웹 브라우저를 통해 API를 성공적으로 사용할 수 있었지만 iPhone 앱을 통해 요청을 보내려고하면 작동하지 않는 것 같습니다. 또한 내 iPhone에서 Safari를 통해 API가 제대로 응답하도록 할 수 있습니다.NSURLSession 서버에 도달하지 않음

{ URL: http://192.168.0.216/mode/7/0 } { status code: 200, headers { 
    Connection = close; 
    "Content-Type" = "application/json"; 
} } : <7b226d65 73736167 65223a20 2250696e 20443722 6964223a 20223030 38222c20 226e616d 65223a20 226d6967 6874795f 63617422 2c202263 6f6e6e65 63746564 223a2074 7275657d 0d0a> 

API가 실제로 JSON 데이터를 반환하도록되어 있지만 웹 브라우저에 대한 응답은 실제로 내 아두 이노의 LED에 영향을 유일한 응답 나는 (콘솔 내에서) 받고 있어요입니다. 나는 그것이 나에게 다시 아무것도 들고되었는지 확인하기 위해 '오류'변수를 인쇄하기로 결정, 나는이 발견 :

을가

NSURL *modeSet = [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.0.216/digital/%d/1", _pin]]; 

NSURLSession *session = [NSURLSession sharedSession]; 
[[session dataTaskWithURL:modeSet 
     completionHandler:^(NSData *data, 
          NSURLResponse *response, 
          NSError *error) { 
      NSLog([NSString stringWithFormat:@"%@ : %@", response, data]); 
     }] resume]; 

EDIT LED를 켜기위한

코드 사람이 발견, 그래서 만약 내 자신의 질문에 대답

Error Domain=NSURLErrorDomain Code=-1001 "The operation couldn’t be completed. (NSURLErrorDomain error -1001.)" UserInfo=0x17807b840 {NSErrorFailingURLStringKey=http://192.168.0.216/mode/7/o, NSUnderlyingError=0x178449450 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1001.)", NSErrorFailingURLKey=http://192.168.0.216/mode/7/o} 
+0

1 그 질문은 무엇입니까? 2. JSON 데이터를 문자열과 NSLog 또는 객체로 변환하고 객체를 NSLog로 반환하여 반환되는 객체를 확인합니다. – zaph

+0

질문은 Arduino에 실제로 도달하지 않는 이유는 무엇입니까? 응답이 나옵니다.하지만 연결 상태 코드 200 (성공)으로 연결이 닫히고 JSON이 틀립니다. 브라우저의 JSON은 영어로되어 있습니다. –

+0

그것은 Arduino에 도달했습니다. 그 이유는 200의 상태와 JSON 응답이 {{ "message": "Pin"D7 "id": "008", "name": "mighty_cat", "connected ": true}'. – zaph

답변

2

전 아이폰 OS 9 대답

Google은 언젠가 묻지 않아도됩니다. 내가 지금처럼 NSUTF8Encoding 제대로 내 문자열을 포맷 된 한 모든 :

NSString *modeSetString = [[NSString stringWithFormat:@"http://192.168.0.216/mode/%d/o", _pin] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSURL *modeSet = [NSURL URLWithString:modeSetString]; 

아이폰 OS 지금은 사용되지 않으며 stringByRemovingPercentEncoding 대신과 같이 사용되어야한다

stringByReplacingPercentEscapesUsingEncoding: 9 업데이트 :

NSString *modeSetString = [[NSString stringWithFormat:@"http://192.168.0.216/mode/%d/o", _pin] stringByRemovingPercentEncoding]; 
NSURL *modeSet = [NSURL URLWithString:modeSetString]; 
관련 문제