OkHttp:无法从静态内容引用非静态方法

时间:2015-09-25 10:03:11

标签: android okhttp

我正在跟进此link的示例我收到错误:

  

非静态方法'newCall(com.squareup.okhttp.Request)无法从静态内容中引用

在这一行Call call = OkHttpClient.newCall(request);

这是代码

public class MainActivity extends Activity {

    public OkHttpClient client = new OkHttpClient();
    String requestUrl = " http://iheartquotes.com/api/v1/random?format=json";
    Request request = new Request.Builder().url(requestUrl).build();
    TextView text1;
    public static final MediaType JSON = 
        MediaType.parse("application/json; charset=utf-8");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text1 = (TextView) findViewById(R.id.messageText);
    }

    call = OkHttpClient.newCall(request);

}

是什么原因?

2 个答案:

答案 0 :(得分:2)

您已经创建了一个客户端。而不是

call = OkHttpClient.newCall(request);

您的代码应如下所示:

call = client.newCall(request);

您需要创建客户端的引用。

答案 1 :(得分:2)

  

非静态方法' newCall(com.squareup.okhttp.Request)

错误意味着您正在尝试调用类的方法,该方法需要对象的实例,就像该方法被标记为静态一样。在您的情况下,newCallnot-static的{​​{1}}方法,因此需要访问OkHttpClient的实例。