访问asp.net Web API时android中的java.net.MalformedURLException

时间:2017-06-14 14:29:03

标签: java android rest asp.net-web-api malformedurlexception

我见过这个question,这不是我的情况,因为我的网址中没有反斜杠,
我有简单的网址,例如https://url.com/login

我的代码

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class LoginActivity extends AppCompatActivity {

    URL url = new URL("https://url.net/login/");


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

        FloatingActionButton btn = (FloatingActionButton) findViewById(R.id.submitbtn);
        EditText edtxt = (EditText) findViewById(R.id.usernm);
        EditText edtxt2 = (EditText) findViewById(R.id.usrpwd);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(getApplicationContext(),HomeActivity.class);
                startActivity(i);
            }
        });

        HttpURLConnection urlConnection = null;
        try {
            urlConnection = (HttpURLConnection) url.openConnection();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            InputStream in = new BufferedInputStream(urlConnection.getInputStream());
            readStream(in);
        } finally {
            urlConnection.disconnect();
        }
    }
}

截图

当我将鼠标悬停在new URL();上时,我得到错误

  

未处理的异常:java.net.MalformedURLException

这就是我在线上收到另一个错误的原因,

InputStream in = new BufferedInputStream(urlConnection.getInputStream());
readStream(in);
堆栈中的

跟踪我的错误

Error:(48, 13) error: cannot find symbol method readStream(InputStream)

1 个答案:

答案 0 :(得分:2)

  

当我将鼠标悬停在新网址();上时,我收到错误消息:

URL()构造函数抛出java.net.MalformedURLException。您需要将该构造函数调用包装在try / catch块中。

  

这就是我在线上收到另一个错误的原因,

这是因为getInputStream()也会抛出已检查的异常。您需要将该代码包装在try / catch块中。

  

这是错误行,我收到错误错误:(48,13)错误:找不到符号方法readStream(InputStream)

这是因为你没有在这个类上实现一个名为readStream()的方法。

所有这些都包含在关于Java编程的任何体面的书籍或课程中。

最终,一旦您通过这些编译错误,您的代码将在运行时使用NetworkOnMainThreadException崩溃,因为您无法在主应用程序线程上执行网络I / O.您需要将此HTTP代码移动到后台线程,无论是您自己创建的还是使用可以为您处理它的HTTP客户端API(例如,OkHttp)。