Tech. Forum 개발자들을 위한 정보 공유의 장입니다
닫기

Tech.Forum

개발 시 인증키관한 문의입니다.

#1

안드로이드 앱으로 활용 할 생각인데

 

인증키 활용을 어떻게 하나요?

 

앞서 API console 말고 다른 형태로는 데이터 결과 값을 알 수 없나요???

0 Likes

#2

안녕하세요. T developers 입니다.

 
 
오전에 드린 답변이 도움이 되지 못한거 같아서, 기존에 비슷한 문의 답변을 전달해 드리도록 하겠습니다.
 
질문 -
 
안드로이드 어플 상에서 T Weather api에서 제공하는 json 파일을 받아 올 수 있게 모든 부분을 완성하였습니다. 하지만, 실제로 값을 요청하니 반환되는 값이 아무것도 없었습니다.
 
밑에 있는 주소값을 직접 구글 크롬 브라우저에 입력해 봤습니다.
 
https://apis.sktelecom.com/v1/weather/status?longitude=127.028557&latitude=37.585118
 
하지만, 결과 값은 밑에 있는 에러 코드가 나왔습니다.
 
{"error":{"code":"9415","id":"415","link":"","message":"지원하지 않는 응답 컨텐트 타입입니다. :: null","service":"system"}}
 
T weather api를 사용하기 위해서는 홈페이지에서 제공하는 api console만을 사용하여야 하는 건가요?
 
답변 -
 
TDCProjectKey 정보를 Header 정보에 입력하지 않고 호출할 때 아래와 같이 에러 메시지가 표시됩니다. 
 
{"error":{"code":"9415","id":"415","link":"","message":"지원하지 않는 응답 컨텐트 타입입니다. :: null","service":"system"}}
 
반드시 TDCProjectKey 정보를 Header 정보에 입력해 주시기 바랍니다.
 
 
[샘플 소스]
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;

public class restTest {
private ResponseHandler<String> responseHandler = new ResponseHandler<String>() {

    @Override
    public String handleResponse(HttpResponse response) throws IOException {

        int status = response.getStatusLine().getStatusCode(); // HTTP 상태코드         
                     
        if (status == HttpStatus.SC_OK) { // 200 인경우 성공
            HttpEntity entity = response.getEntity();
            return entity != null ? EntityUtils.toString(entity) : null;
        } else {
            ClientProtocolException e = new ClientProtocolException(&quot;Unexpected response status: &quot; + status);
            throw e; // 상태코드 200이 아닌경우 예외발생
        }

    }
     
};
 
/*GET 방식의 요청 */ 
public String requestGet(String url, List&lt;NameValuePair&gt; params) {
     
    String responseBody = null; 
    HttpClient httpclient = new DefaultHttpClient();
     
    try {
         
        String queryParams = URLEncodedUtils.format(params, HTTP.UTF_8); //Parameter 구성 (인코딩 UTF-8)
         
        URI uri = new URI(url + &quot;?&quot; + queryParams); //ex) http://test.com/test.do?id=1 형태 구성
        HttpGet httpget = new HttpGet(uri);
        // 헤더 값 셋팅 
        httpget.setHeader(&quot;HEADER_1&quot;, &quot;1234&quot;);
        httpget.setHeader(&quot;HEADER_2&quot;, &quot;asdf&quot;);
        httpget.setHeader(&quot;TDCProjectKey&quot;, &quot;11223344&quot;);
        httpget.setHeader(&quot;Content-Type&quot;, &quot;application/json; charset=UTF-8&quot;);
        
        responseBody = httpclient.execute(httpget, responseHandler);
         
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
     
    return responseBody;
}
 
/*POST 방식의 요청 */ 
public String requestPost(String url, String MDN, String Token,  JSONObject jsonBody) {
     
    String responseBody = null; 
    HttpClient httpclient = new DefaultHttpClient();
     
    try {
         
        HttpPost httppost = new HttpPost(url);    
        
        httpget.setHeader(&quot;HEADER_1&quot;, &quot;1234&quot;);
        httpget.setHeader(&quot;HEADER_2&quot;, &quot;asdf&quot;);
        httpget.setHeader(&quot;TDCProjectKey&quot;, &quot;11223344&quot;);
        httpget.setHeader(&quot;Content-Type&quot;, &quot;application/json; charset=UTF-8&quot;);

        //request body 에 추가 할  json 데이터            
        StringEntity body = new StringEntity(jsonBody.toString());
        httppost.setEntity(body);
        responseBody = httpclient.execute(httppost, responseHandler);           
         
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
     
    return responseBody;
}


//요청 예제
public static void main(String args[]){
    
         
    
    String targetUrl = &quot;http://server.com&quot;;

    JSONObject jsonObj = new JSONObject(); 
    
    //요청할 json DATA 샘플 
    // {&quot;name&quot;:&quot;kim&quot;, &quot;age&quot;:18, &quot;addr&quot;:&quot;서울시 을지로 11번가 T 타워&quot;}
    

    jsonObj.put(&quot;name&quot;, &quot;kim&quot;);
    jsonObj.put(&quot;age&quot;, 18);
    jsonObj.put(&quot;addr&quot;, &quot;서울시 을지로 11번가 T 타워 &quot;);


    // 헤더에 포함 시킬 value
    String MDN = &quot;01011112222&quot;;
    String Token=&quot;1234567890&quot;;

    //post 방식일때
    restTest network = new restTest(); 
    String responceBody = network.requestPost(targetUrl, MDN, Token,  jsonObj);

    System.out.println(&quot;reponse data :&quot;+responceBody);
}

}

 
 
다른 궁금하신 내용이 있으시면 언제든 문의해 주시기 바랍니다. 
 
감사합니다. 
 
0 Likes