仕事で内部 Web サーバーと通信するアプリを構築しています。これにはログイン プロセスがあります。
問題は、機能する実際の URL を使用すると、MalformedURLException が発生することです。また、アプリでアドレスに http:// を使用すると、エラーが発生します。
com.android.okhttp.internal.http.HttpTransport$FixedLengthInputStream@42c06aa0
Firefox や Chrome などのブラウザでアドレスに http:// を追加すると、サイトはそれ自体にリダイレクトされますが、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;
}
}
私の質問は、「HTTP://」なしでこのような URL を使用するにはどうすればよいか、「HTTP://」を使用できるようにサイトまたは DNS を変更するにはどうすればよいか、それとも何か問題があるのでしょうか。コード?
可能であれば、いくつかの可能性を提示したいと思います。
ありがとう、ウェイン