Android “错误”;未处理的异常:java.io.IOException“;在MainActivity中使用OkHttp时

Android “错误”;未处理的异常:java.io.IOException“;在MainActivity中使用OkHttp时,android,ioexception,okhttp,main-activity,Android,Ioexception,Okhttp,Main Activity,//Response=client.newCall(request.execute()上出现错误; 返回响应。body().string();//线 整个代码: ` 我应该在哪里写我输入的url地址?在OkHttp文档中,它仅为公共类显示。如果我在MainActivity中下载此代码,应在何处编写此代码: publicstaticvoidmain(字符串[]args)引发IOException{ OkHttpexample OkHttpexample=新的OkHttpexample(); 字符串

//Response=client.newCall(request.execute()上出现错误; 返回响应。body().string();//线 整个代码: `

我应该在哪里写我输入的url地址?在OkHttp文档中,它仅为公共类显示。如果我在MainActivity中下载此代码,应在何处编写此代码:

publicstaticvoidmain(字符串[]args)引发IOException{
OkHttpexample OkHttpexample=新的OkHttpexample();
字符串响应=
okHttpexample.run(“https://raw.github.com/square/okhttp/master/README.md");
System.out.println(响应);}


如果您了解更多关于OkHttp的详细教程,它将非常有用

您可能需要捕获
IOException
,尝试使用try/catch来包含您的HTTP调用

Try {
    Request request = new Request.Builder() 
            .url(url)
            .build(); 
    Response response = client.newCall(request).execute();
    return response.body().string();
} catch (IOException exception) {
}
执行此操作时,请从方法声明中删除
抛出IOException

以供参考:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);        

    new APIRequest().execute();
}    

private class APIRequest extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... voids) {
        String response;
        try {
            // HTTP GET
            GetExample example = new GetExample();
            response = example.run("http://192.168.1.100/api/getsomething");                
        } catch (IOException e) {
            response = e.toString();
        }
        return response;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);

        // do something...
    }
}

public class GetExample {
    final OkHttpClient client = new OkHttpClient();

    String run(String url) throws IOException {
        try {
            Request request = new Request.Builder()
                    .url(url)
                    .build();                
            Response response = client.newCall(request).execute();
            return response.body().string();
        } catch (Exception e) {                
            return e.toString();
        }
    }
}    
}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新建APIRequest().execute();
}    
私有类APIRequest扩展异步任务{
@凌驾
受保护的字符串背景(无效…无效){
字符串响应;
试一试{
//HTTP获取
GetExample=新的GetExample();
响应=示例。运行(“http://192.168.1.100/api/getsomething");                
}捕获(IOE异常){
响应=e.toString();
}
返回响应;
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
//做点什么。。。
}
}
公共类GetExample{
最终OkHttpClient客户端=新的OkHttpClient();
字符串运行(字符串url)引发IOException{
试一试{
Request Request=newrequest.Builder()
.url(url)
.build();
Response=client.newCall(request.execute();
返回响应.body().string();
}捕获(例外e){
返回e.toString();
}
}
}    
}

这是Java吗?它甚至还撒谎吗?你懂java吗?为什么你要把方法的主体放在另一个方法的主体里面?空捕获不需要,当然NOMTExceptionWow也不需要,真的吗?在抓捕中该做什么由他决定。。。你当然不应该让它空着。我不明白你所说的“NomteSeption”是什么意思。。你能说得更清楚一点吗?不是空的陷阱是让他问另一个关于NOMTE的恼人问题——android世界中最常见的例外,当noobs使用网络时我不是。。。当然不是。只适用于那些在询问之前太过保守而无法使用谷歌的人。。。Fx此代码来自您尝试在google中搜索okhttp时的第一个站点。。
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);        

    new APIRequest().execute();
}    

private class APIRequest extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... voids) {
        String response;
        try {
            // HTTP GET
            GetExample example = new GetExample();
            response = example.run("http://192.168.1.100/api/getsomething");                
        } catch (IOException e) {
            response = e.toString();
        }
        return response;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);

        // do something...
    }
}

public class GetExample {
    final OkHttpClient client = new OkHttpClient();

    String run(String url) throws IOException {
        try {
            Request request = new Request.Builder()
                    .url(url)
                    .build();                
            Response response = client.newCall(request).execute();
            return response.body().string();
        } catch (Exception e) {                
            return e.toString();
        }
    }
}    
}