ChatWork API를 두드려 보면 오류가 발생한 이야기 ​​등

5993 단어 Chatwork

ChatWork API를 두드려 메시지 게시



chatwork의 API를 문서(이하 URL)를 참고로 하면
ぇぇぺぺr. 제대로 rk. 코 m/쟈/엔 d포인 t_로오 ms. html #포 ST-로오 ms-로오 m_이 d-메사게 s
curl -X POST -H "X-ChatWorkToken: 自分のAPIトークン" -d "body=Hello+ChatWork%21" "https://api.chatwork.com/v2/rooms/{room_id}/messages"
와 파라미터를 지정하고 두드리면 메시지가 등록되는 것 같습니다.

room_id : 채팅 작업실 URL의 #!rid 이후의 값
API 토큰 : 계정별로 발행 할 수있는 API 토큰 값

Guzzle에서 두드려 보았습니다.


// xxxxxは各自設定を行う
define('ROOM_ID', 'xxxxxxx');
define('API_TOKEN', 'xxxxxxxxxxxxxxxxxxxxxx');

try {
    $client = new GuzzleHttp\Client();
    $request_url = "https://api.chatwork.com/v2/rooms/". ROOM_ID ."/messages";
    $client->post($request_url, [
        'headers'     => ['X-ChatWorkToken' => API_TOKEN],
        'body' => ['body' => 'hogehoge']
    ]);
} catch (GuzzleHttp\Exception\ClientException $e) {
    echo $e->getResponse()->getStatusCode();
    exit;
}

이것을 실행하면,



그리고 게시되었습니다!

에러한 체험담



에러한 1(스테이터스 코드:400)



API를 두드릴 때 body의 내용이 빈 문자이면 400이 반환됩니다.
위의 경우에는 오류가 발생하지 않았지만,
문자수가 너무 많은 경우에도, 400이 돌아오는 거동같습니다. 이 경우에 에라리했습니다.
이것은 조사해도 해당 문서가 발견되지 않고, 아직 잘 모르지만,
body에 바이트수 제한 혹은 문자수 제한이 있는 것이 아닐까 생각하고 있습니다.
그건 그렇고

$hoge = '';
foreach (range(1,20000) as $value) {
  $hoge .= 'hoge';
}
try {
    $client = new GuzzleHttp\Client();
    $request_url = "https://api.chatwork.com/v2/rooms/". ROOM_ID ."/messages";
    $client->post($request_url, [
        'headers'     => ['X-ChatWorkToken' => API_TOKEN],
        'body' => ['body' => $hoge]
    ]);
} catch (GuzzleHttp\Exception\ClientException $e) {
    echo $e->getResponse()->getStatusCode();
    exit;
}

그렇다면 400이 반환되었습니다.
hoge*10000이라면 200이었으므로, 이 근처에 상한이 있을 것 같습니다.
저도 이 문자수 너무 많은 문제로 어떻게 할까 생각하고 있는 곳입니다. .
마음이 가득한 사람은 확인할 수 있습니다.

에러한 예 2(스테이터스 코드:401)



액세스 토큰이 만료되면 401이 리턴됩니다.
잘못된 API 토큰을 설정한 경우 401이 반환되었습니다.
올바른 API 토큰인지 확인합니다.

이상입니다.

좋은 웹페이지 즐겨찾기