코드워커
869
2020-12-04 02:04:36
4
727

API 를 이용한 타이젠 앱개발을 해보았는데, API서버 때문에 고생했네요~



위 링크를 이용해서 자미린으로 타이젠앱 개발을 하다가


발견했는데, 배송조회 API서버에서 http response STATUS code가

제대로 response가 와도 STATUS code가 false로 만 오네요.

이것 때문에 개고생 했네요.


결국 오픈소스인 API서버에 git issue를 올렸네요.


참고로 오픈소스인 배송조회 API서버는 하기에,,,

https://tracker.delivery/guide


제 앱 소스는 하기에,,,

https://bit.ly/3lIXZX2

  ==> client 소스 중 아래 코드에서 


using (HttpResponseMessage response = await client.GetAsync(uriStr))
{
                    DbgMsg = string.Format("HTTP Get Req.");
                    //if (response.IsSuccessStatusCode)
                    if(true)
                    {
                        DbgMsg = string.Format("Req Success.");
                        responseBody = response.Content.ReadAsStringAsync().Result;

                        DbgMsg = string.Format("Json parse.");
                        return JsonParse(responseBody);
                    }
                    else
                    {
                        DbgMsg = string.Format($"Req. Fail 
 {response.IsSuccessStatusCode}");
                        return false;
                    }
                }
                return false;

==> 여기 코드에서 //if (response.IsSuccessStatusCode) 
무조건 response.IsSuccessStatusCode 가 false로 오네요.

   
다른 API (구글API)를 동일한 클라이언트 코드로 테스트 해봤는데,

전혀 문제가 없이 response.IsSuccessStatusCode 가 true로 왔습니다.


결국 API서버 문제인 것으로 잠정 결론 내고, github에 issue도 올렷네요.

(=> https://github.com/shlee322/delivery-tracker/issues/88 )

언제 수정될 지는 전혀 예상이 안되는 상황인 것 같아,

다른 배송조회 API를 찾아보는 중이네요.



SIGNATURE

대부분의 아이템은 중고로 거래하는 1인 / 자원 재활용 하자!
=> https://freenanum.github.io/market/


0
  • 댓글 4

  • 악플러
    177
    2020-12-04 10:12:28 작성 2020-12-04 10:13:45 수정됨

    API 사용했을때 정상적으로 성공한 경우 200으로 잘 나오는 것 같은데 데이터 어떻게 넘겼나요?

    IsSuccessStatusCode가 false로 나왔다고 하셨는데 false일때 StatusCode확인해보셨어요?

  • 코드워커
    869
    2020-12-04 16:31:26

    제 클라이언트 소스는 하기에 위치해 있습니다.

    (=> https://bit.ly/3lIXZX2 )


    위 링크에서 보시다시피, 제 Uri는 아래와 같이 보냅니다.

    String uriStr = "https://apis.tracker.delivery/carriers/" + companyCode + "/tracks/" + et_number.Text;


    참고로 위 코드가 안되서 다양한 방법으로 Uri 를 테스트해서 보냈습니다.(위 링크 참조하시면,)

    그래서 마지막으로 hard coding해서 아래와 같이 보내 봤습니다.

    String uriStr = "https://apis.tracker.delivery/carriers/kr.cvsnet/tracks/11111";

    예상되는 json은 잘못된 운송장 번호(11111)라서 아마도 아래와 같이올 겁니다.

    {

    "message"; "~~~~~~~~~"

    }

    이렇게 해도 Status code 는 true가 와야 하는데,

    이 경우도 status code가 false로 나옵니다.


    response가 제대로 왔는데도 무조건 false로 오네요.




  • 코드워커
    869
    2020-12-04 16:41:02

    curl -v "https://apis.tracker.delivery/carriers/kr.cvsnet/tracks/11111"


    위와 같이 명령을 내리면 status code가 "HTTP/1.1 200 OK" 가 나와야되는데

    "HTTP/1.1 404 Not Found" 가 오는 걸로 확인됩니다.


    테스트한 로그는 아래와 같습니다.

    C:\TizenSDK\tools\ide\bin>curl -v "https://apis.tracker.delivery/carriers/kr.cvsnet/tracks/11111"

    *   Trying 13.125.196.187...

    * TCP_NODELAY set

    * Connected to apis.tracker.delivery (13.125.196.187) port 443 (#0)

    * schannel: SSL/TLS connection with apis.tracker.delivery port 443 (step 1/3)

    * schannel: checking server certificate revocation

    * schannel: sending initial handshake data: sending 192 bytes...

    * schannel: sent initial handshake data: sent 192 bytes

    * schannel: SSL/TLS connection with apis.tracker.delivery port 443 (step 2/3)

    * schannel: failed to receive handshake, need more data

    * schannel: SSL/TLS connection with apis.tracker.delivery port 443 (step 2/3)

    * schannel: encrypted data got 4096

    * schannel: encrypted data buffer: offset 4096 length 4096

    * schannel: encrypted data length: 4030

    * schannel: encrypted data buffer: offset 4030 length 4096

    * schannel: received incomplete message, need more data

    * schannel: SSL/TLS connection with apis.tracker.delivery port 443 (step 2/3)

    * schannel: encrypted data got 1024

    * schannel: encrypted data buffer: offset 5054 length 5054

    * schannel: encrypted data length: 213

    * schannel: encrypted data buffer: offset 213 length 5054

    * schannel: received incomplete message, need more data

    * schannel: SSL/TLS connection with apis.tracker.delivery port 443 (step 2/3)

    * schannel: encrypted data got 134

    * schannel: encrypted data buffer: offset 347 length 5054

    * schannel: sending next handshake data: sending 126 bytes...

    * schannel: SSL/TLS connection with apis.tracker.delivery port 443 (step 2/3)

    * schannel: encrypted data got 274

    * schannel: encrypted data buffer: offset 274 length 5054

    * schannel: SSL/TLS handshake complete

    * schannel: SSL/TLS connection with apis.tracker.delivery port 443 (step 3/3)

    * schannel: stored credential handle in session cache

    > GET /carriers/kr.cvsnet/tracks/11111 HTTP/1.1

    > Host: apis.tracker.delivery

    > User-Agent: curl/7.55.1

    > Accept: */*

    >

    * schannel: client wants to read 102400 bytes

    * schannel: encdata_buffer resized 103424

    * schannel: encrypted data buffer: offset 0 length 103424

    * schannel: encrypted data got 322

    * schannel: encrypted data buffer: offset 322 length 103424

    * schannel: decrypted data length: 293

    * schannel: decrypted data added: 293

    * schannel: decrypted data cached: offset 293 length 102400

    * schannel: encrypted data buffer: offset 0 length 103424

    * schannel: decrypted data buffer: offset 293 length 102400

    * schannel: schannel_recv cleanup

    * schannel: decrypted data returned 293

    * schannel: decrypted data buffer: offset 0 length 102400

    < HTTP/1.1 404 Not Found

    < Date: Fri, 04 Dec 2020 07:33:53 GMT

    < Content-Type: application/json; charset=utf-8

    < Content-Length: 42

    < Connection: keep-alive

    < X-Powered-By: Express

    < Access-Control-Allow-Origin: *

    < ETag: W/"2a-E/EOt/ea59qYCkLbn1wauQcPkZw"

    <

    {"message":"조회결과가 없습니다"}* Connection #0 to host apis.tracker.delivery left intact


    C:\TizenSDK\tools\ide\bin>


    그럼, 확인 부탁드립니다.




  • 코드워커
    869
    2020-12-04 23:48:57

    제가 curl 로 다시 확ㅇ니해보니,


    제대로 된 운송장 번호를 parameter로 입력하여 


    확인해보니 API서버에서 제대로 200 OK라고 http response Status code가 오네요.


    참고로,


    잘못된 운송장 번호를 입력하니 404 가 떴네요.


  • 로그인을 하시면 댓글을 등록할 수 있습니다.