title: Retrofit 2.0 java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING
body: <p>I'm using Retrofit 2.0 in my app. Everything was quite good, but when I started request, it returns:</p>
  
  <pre><code>**java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING
  at line 1 column 21 path $[0].iso**
  </code></pre>
  
  <p>Here's my API interface:</p>
  
  <pre><code>public interface GetPhones {
      @GET("phones.php")
      Call&lt;ArrayList&lt;Phones&gt;&gt; getPhones();
  }
  </code></pre>
  
  <p>and model class:</p>
  
  <pre><code>public class Phones {
      int id;
      char[] iso;
      String name;
      String phone_1;
      String phone_2;
      String phone_3;
  }
  </code></pre>
  
  <p>and code in fragment:</p>
  
  <pre><code>Retrofit retrofit = new Retrofit.Builder()
           .baseUrl(URL_API)
           .client(SSLSuppressClient.trustcert())
           .addConverterFactory(GsonConverterFactory.create())
           .build();
  GetPhones getPhonesInfo = retrofit.create(GetPhones.class);
  Call&lt;GetPhones&gt; call = getPhonesInfo.getPhones();
  call.enqueue(new Callback&lt;GetPhones&gt;() {
      @Override
      public void onResponse(Response&lt;GetPhones&gt; response, Retrofit retrofit) {
          Toast.makeText(getActivity(), "Success!", Toast.LENGTH_SHORT).show();
      }
  
      @Override
      public void onFailure(Throwable t) {
          Toast.makeText(getActivity(), "Failure!", Toast.LENGTH_SHORT).show();
          Log.d("LOG", t.getMessage());
                  }
      });
  </code></pre>
  
  <p>Seems that problem is aroung gzip which enabled on the server side. But when I try code with Response - it works like a charm. So, problem is not in gzipping.</p>
  
  <pre><code>Retrofit retrofit = new Retrofit.Builder()
               .baseUrl(URL_API)
               .client(SSLSuppressClient.trustcert())
               .addConverterFactory(GsonConverterFactory.create())
               .build();
  GetPhones getPhonesInfo = retrofit.create(GetPhones.class);
  Call&lt;List&lt;com.squareup.okhttp.Response&gt;&gt; call = getPhonesInfo.getPhones();
  call.enqueue(new Callback&lt;List&lt;com.squareup.okhttp.Response&gt;&gt;() {
          @Override
          public void onResponse(Response response, Retrofit retrofit) {
               Toast.makeText(getActivity(), "Success!", Toast.LENGTH_SHORT).show();
               Log.d("LOG", response.message());
               Log.d("LOG", response.raw().toString());
  }
  
          @Override
          public void onFailure(Throwable t) {
               Toast.makeText(getActivity(), "Failed!", Toast.LENGTH_SHORT).show();
               Log.d("LOG", t.getMessage());
          }
  });
  </code></pre>
  
  <p>Where did I go wrong?</p>