0

Web サーバーに保存されている MySQL データベースからユーザー データを取得する Android アプリの作成に取り組んでいます。データベースに接続できるようにする HTTP Post に関するチュートリアルをいくつか読んだことがあります。ただし、php から送信されるデータを処理できません。

私が受け取ったエラーは次のとおりです: org.apache.http.MalformedChunkCodingException: チャンク ストリームが予期せず終了しました。

これは私が書いたコードです:

String name = username.getText().toString();  //username is a TextView field
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);       
    nameValuePairs.add(new BasicNameValuePair("user",name));
    try
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(location);
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    }
    catch(Exception e)
    {
        Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
        Log.e("log_tag", "Error in http connection"+e.toString());
    }

    //Convert response to string
    try
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

        sb = new StringBuilder();

        String line = null;

        while ((line = reader.readLine()) != null)
        {
            sb.append(line + "\n");
        }

        is.close();

        result = sb.toString();

        Log.i("log_tag", result);
    }
    catch(Exception e)
    {
        Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
        Log.e("log_tag", e.toString());
    }

エラーは、文字列セクションへの変換応答に表示されるようです。受け取ったものと同様のエラーに関するいくつかの問題を調べましたが、読んだ内容はあまり役に立たないようでした。または、http クライアントのコーディングについて十分に知らないだけです...おそらく後者です。どんな助けでも大歓迎です、ありがとう!

ここにもPHPがあります:

<?php

$con = mysqli_connect("/**connection*/");
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: ".mysqli_connect_error();
}
$result = mysqli_query($con, "SELECT * FROM userNames WHERE user='".$_POST['name']."')";

if ($result == NULL)
{
    die();
}
else
{
    //TODO:get row to java
    $rows = array();
    while($r = mysql_fetch_assoc($result)) 
    {
            $rows[] = $r;
    }
    print json_encode($rows);
    mysql_close();
}
mysqli_close($con);

} ?>

これの最終目標は、データベースからの JSON 応答を個別の変数に変換することです。バッファリングされたリーダーは、JSON 変換の前の中間ステップにすぎません。繰り返しますが、チュートリアルに従っただけなので、これについて別の方法を知っている人がいれば、提案を受け付けています。

4

0 に答える 0