2016-11-14 1 views
0

서버를 호출하고 JSON 정보를 가져 오는 작은 응용 프로그램을 만들고 싶습니다.웹 요청이 작동하지 않는 경우

{"temperature":23.60,"humidity":18.40} 

내 코드는 다음과 같다 :

let requestURL: NSURL = NSURL(string: "http://esp_0b48a1:1337/")! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(url: requestURL as URL) 
    let session = URLSession.shared 
    let task = session.dataTask(with: urlRequest as URLRequest) { 
     (data, response, error) -> Void in 

     let httpResponse = response as! HTTPURLResponse 
     let statusCode = httpResponse.statusCode 

     if (statusCode == 200) { 
      print("Everyone is fine, file downloaded successfully.") 
      do{ 
       let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String:AnyObject] 

       if let temp = json["temperature"] as? String { 
        self.degrees.text = temp + "°C"; 
        print(temp); 
       } 
       if let hum = json["humidity"] as? String { 
        self.hum.text = hum + "%"; 
        print(hum); 
       } 
      }catch{ 
       print("error"); 
       self.degrees.text = "no Temperature"; 
       self.fill.text = "with"; 
       self.degrees.text = "some errors like " + String(statusCode); 
      } 
     } 
    } 

    task.resume() 

그리고 내 MainViewController의 viewDidLoad에 함수를 실행하고 서버가 반환하는 것은 이것이다. 출력이 "모두 정상이지만, 파일 dl 성공적으로"출력되지만 더 이상 출력되지 않습니다. do 블록이나 캐치에서의 출력은 UILabels를 변경하지 않습니다. 하지만 웹 서버에서 요청이 있다는 것을 알 수 있습니다!

왜 그런가? 나는 부동 당신이 가야한다로 주조

dunklesToast

+1

메인 큐에 ui 업데이트를 디스패치해야하지만 클로저에 중단 점을 설정하고 단계별로 진행되는 것을 확인하십시오. 귀하의 값은 문자열이 아닌 부동으로 표시되므로 내 추측은 조건부 다운 캐스트가 실패한 것입니다 – Paulw11

답변

1

HTTP를 통해 연결하고 예 (의 Info.plist)에 앱 운송 보안 설정에서 허용 임의의 부하를 설정하고있다. 캐스팅 실패를 처리하기 위해 else를 추가 할 것을 제안합니다.

+1

Worked! 그러나 Float과 String을 함께 넣기 위해'+'를 사용할 수 없기 때문에'temp + "C"''를 \ (temp) ° C "'로 변경해야했습니다. 고맙습니다! – dunklesToast

+0

예! 사실. –

관련 문제