私の仕事で内部Webサーバーと通信するアプリケーションをビルドしていますが、ログインプロセスがあります。Android Studio SDK 23のMalformedURLException、プレフィックスなしのサイトリダイレクト
問題は、動作する実際のURLを使用するとMalformedURLExceptionが発生することです。そして、私がHTTPを使用する場合:私のアプリ内のアドレスで//を、私はエラーを取得:
com.an[email protected]42c06aa0
私はHTTPを追加する場合:// FirefoxやChromeのようなブラウザのアドレスに移動すると、サイトはhttp://を使わずに自身にリダイレクトされます。私はそれが何とか "http://"部分で動作しないように設計されていると思うが、私はこれを回避する方法がわからない。
私は数時間、HttpUrlConnectionの使用について検索しましたが、私が見つけたのは、URLでプロトコルが必要であることです。
私のコードは今のように見えますが、私はプライバシー上の理由から実際のURLを "MyServerName"、 "MyOrgName"に置き換えました。
public class DoLogin extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
Bundle extras = getIntent().getExtras();
String username = extras.getString("Username");
String password = extras.getString("Password");
String charset = "UTF-8";
String pageText = "";
try {
URL url = new URL("http://MyServerName.MyOrgName.k12.mo.us/service/login.asp?ucode=" + username + "&upassword=" + password);
//URL url = new URL("http://www.google.com/");
URLConnection connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", charset);
InputStream response = connection.getInputStream();
pageText = response.toString();
} catch (MalformedURLException e) {
//Do something with the exception.
pageText = "MalformedURLException " + e.getMessage();
} catch (IOException e2) {
//Do something with the exception.
pageText = "IOException " + e2.getMessage();
} catch (NullPointerException e3) {
pageText = "NullPointerException " + e3.getMessage();
}
setData(pageText);
return null;
}
}
私の質問はどのように私はこのようなURLを使用しますが、「HTTP://」なしでするか、である、またはどのようにそれは「HTTP://」を使用することができるように、私は、サイトまたはDNSを変更することができ、または私のコードに何か問題がありますか?
可能な限り、私はいくつかの可能性を提示したいと思います。これは問題ではありませんので、一部:
おかげで、 ウェイン
は、サーバが別のページにリダイレクトしていますか? –
'それは何とか" http:// "part"で動作しないように設計されていると思います。 "プロトコル"と呼ばれ、常に指定されています。あなたのケースでは、 'http'か、安全な接続である' https'を使ってパスワードを送る方が好きでしょう。あなたはそれを試しましたか? –
「エラーが発生しました」 - これはエラーではありません。これは 'com.android.okhttp.internal.http.HttpTransport $ FixedLengthInputStream'オブジェクトで呼び出された' toString() 'の出力です。クラッシュしている場合、あなたの質問に完全なスタックトレースを投稿したいかもしれません。 – CommonsWare