※ ChatGPTを利用し、要約された質問です(原文:NumberFormatエラーでこまっています)
NumberFormatエラーでこまっています
このQ&Aのポイント
Android EclipseでPHPの値をINT型に変換する際にNumberFormatエラーが発生しています。
POSTリクエストで取得した値をINT型に変換するためにParseIntを使用していますが、エラーが出ています。
PHP側では値を正しく取得しているようですが、Eclipse上で値の型を確認するとStringとなっています。
Android Eclipse でかんたんなアプリを作っています PHPが表示した値を持ってきて INT型に変換したいのですがNumberFormatエラーがでてしまいます。
String ret = "";
// URL
URI url = null;
try {
url = new URI( "http://10.0.2.2/CarStudy/passview.php" );
Log.d("posttest", "URLはOK");
} catch (URISyntaxException e) {
e.printStackTrace();
ret = e.toString();
}
// POSTパラメータ付きでPOSTリクエストを構築
HttpPost request = new HttpPost( url );
List<NameValuePair> post_params = new ArrayList<NameValuePair>();
ここで前のページからもってきたID変数をPOSTしておくってやります。
post_params.add(new BasicNameValuePair("userid", ID));
try {
// 送信パラメータのエンコードを指定
request.setEntity(new UrlEncodedFormEntity(post_params, "UTF-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
// POSTリクエストを実行
DefaultHttpClient httpClient = new DefaultHttpClient();
try {
Log.d("posttest", "POST開始");
ret = httpClient.execute(request, new ResponseHandler<String>() {
このあとretに格納してあるのもInteger型にしたいのですが、 どうしてもNumberFormatエラーがでてしまします。
String型ですのでLog.dで確認するとしっかりとパスワードが取り出せています
ですので int retint = integer.parseInt(ret,0); をするのですが、エラーがでます。
trim() なども試しましたがどうもなりません。
調べたところ ParseIntは中に整数のみができる?みたいなことが書いてあるのですが 実際中に入っているのはString型のただの数字です。
型変換のやり方がEclipse上でできないのならば
受け取る際に Ret に既にInt型の状態で受け取りたいのですがそちらもうまくいきません。
文章がおかしいかもしれませんが助けてくださる方お願い致します。。
いちおうPHPの方ものせておきます
$ID = $_POST["userid"];
$recordSet = mysql_query('SELECT * FROM studentt WHERE studentID=' . $ID);
$data = mysql_fetch_assoc($recordSet);
echo $data['pass'];
Echoしたやつを持ってきてRetに入れるのですが・・・
StringかどうかEclipse上で Retに対してCtrl+スペースで型を確認してもStringとなっており
Logで確認しても ちゃんと「0001」とはいっています。
つまりこの0001の他になにか文字が入っているということなのでしょうか?
PerseIntはString内の数字を変換できると書いてありますが 文字が入っている場合はエラーがでると書いてあります。 ですが0001とかしはいっていないので 困っています
お礼
ご指摘ありがとうございまいした! そちらの方も修正しました。 一応自己解決しました。原因はPHPのほうがUTF-8で記述していたのですが UTF-8Nじゃないと ParseIntが使えないことがわかりました 助かりましたありがとうございました!