LoginSignup
33
31

More than 5 years have passed since last update.

Charlesでリクエスト/レスポンスの中身を書き換える

Posted at

この記事はSpeee Advent Calendar 3日目の記事です。
前日の記事はこちら Charlesで他社アプリの通信を覗く

昨日に引き続いてまた私です。そしてまたCharlesです。

Breakpointの設定

Charlesは任意のアクセスのリクエスト送信/レスポンス受信のタイミングでブレークポイントを設定でき、ブレークしたタイミングでリクエストヘッダとかレスポンスボディとかを書き換えられる。つまり、サーバーに変なリクエストを送ってみるとか、API叩いたら変なレスポンスが返ってきた想定でアプリに処理させるとか、そういうことができる。

画面左のリクエストのツリーからいじりたいアクセス先を右クリックしてBreakpointsを選択。何も起きてないように見えるが、もっかい右クリックするとBreakpointsにチェックが付いてるはず。

アクセスする

Breakpointを置いた状態でそこにアクセスすると、リクエストを送る前にCharlesが処理を止めてくれる。

スクリーンショット 2015-12-03 10.33.59.png

いじいじしたいところをいじいじして、Executeを押せばリクエストが飛ぶ。

レスポンスが返ってきたら、また止まる。

スクリーンショット 2015-12-03 10.36.44.png

レスポンスもいじいじできる。Executeを押せばリクエストを投げたアプリなどにレスポンスが返される。

使いみち

僕はアプリ作るときに、○○のデータがnullでもクラッシュしないかとか、jsonの配列の要素数がめっちゃ多くても大丈夫かとか、そういうののチェックに使ってます。

あとはビューに表示する文字列が長すぎるときにレイアウト崩れないかなーとか。コード内で文字列書き換えればいいんだけど、ビルドしなおすのも時間かかって面倒だし、こっちでやってる。

サーバーサイドやってる人には便利な使いみちあるのかな?ぱっと思いつかん。

その他

僕が使うときはだいたいレスポンスがいじれればいいので、リクエスト側でブレークしてくれなくていい。そういうときは、Proxy -> Breakpoint Settings...で対象のURLをダブルクリックするとRequestResponseのチェックボックスがあるので要らない方を外せばいい。

スクリーンショット 2015-12-03 10.41.38.png

あと、アプリ側から見るとCharlesで止めてる間は単純にサーバーからレスポンスが返ってきてない時間なのでもたもたしてるとタイムアウトしちゃうので注意。

さいごに

アプリが落ちないかどうかをチェックするためにサーバーサイドのエンジニアにデータいじってもらったりするの、だいぶ無駄な感じがするので、アプリエンジニアだけで色んなパターンのレスポンスを試せるのが非常に便利だと思っています。

意図的にタイムアウトさせてエラー処理がちゃんとできてるかどうかを見るとか、そういう使い方もできるのではないでしょうか。Charlesの可能性は無限大です。

33
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
31