Php 解析数据org.json.JSONException:Value<;时出错;!无法将java.lang.String类型的DOCTYPE转换为JSONObject

Php 解析数据org.json.JSONException:Value<;时出错;!无法将java.lang.String类型的DOCTYPE转换为JSONObject,php,android,mysql,json,phpmyadmin,Php,Android,Mysql,Json,Phpmyadmin,我是Android开发新手 我正在尝试使用JSON在列表视图中基于userid获取db值 我搜索了stackoverflow以查找此问题,但找不到此问题的解决方案 我不知道我得到了什么,JSONArray还是JSONObject 标题显示在日志中。我已经尝试了下面提到的代码 public class Search_Id extends Activity implements OnClickListener { private static String url_search_by_id=

我是Android开发新手

我正在尝试使用JSON在列表视图中基于userid获取db值

我搜索了stackoverflow以查找此问题,但找不到此问题的解决方案

我不知道我得到了什么,JSONArray还是JSONObject

标题显示在日志中。我已经尝试了下面提到的代码

public class Search_Id extends Activity implements OnClickListener
{
    private static String url_search_by_id="php file in the remote server";

    private static final String REGISTER="regs";
    private static final String ID="id";
    private static final String FNAME="fname";
    private static final String LNAME="lname";
    private static final String PROFILEFOR="profilefor";
    private static final String AGE="age";

    private ProgressDialog PDialog;
    EditText Et_sear_id;    
    Button Btn_Search;

    TextView  search_id_detail_id,search_id_detail_fname,search_id_detail_lname,search_id_detail_profilefor,search_id_detail_age;

public void onCreate(Bundle b)
{
    super.onCreate(b);
    setContentView(R.layout.search_id);
    Et_sear_id=(EditText)findViewById(R.id.sear_et_id);
    Btn_Search=(Button)findViewById(R.id.sear_btn_search);
    Btn_Search.setOnClickListener(this);
}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    if(v.equals(Btn_Search))
    {
    //new SearchDetail().execute();
    final String st_id=Et_sear_id.getText().toString();

    if(st_id.length()>0)
    {
        ArrayList<NameValuePair> postparameter=new ArrayList<NameValuePair>();
        postparameter.add(new BasicNameValuePair("id",st_id));

        String response=null;
        try
        {
            response = CustomHttpClient.executeHttpPost("php file in the remote      server", postparameter);  
            String res=response.toString();
            //  res = res.trim();
            res= res.replaceAll("\\s+","");
            //error.setText(res);


            //Toast.makeText(getApplicationContext(), res, Toast.LENGTH_SHORT).show();
            if(res.equals("yes"))
            {   
                new SearchDetail().execute();
                Toast.makeText(getApplicationContext(), "Correct",Toast.LENGTH_SHORT).show();
            }
            else
            {
                Toast.makeText(getApplicationContext(), "Incorrect",Toast.LENGTH_SHORT).show();
                Et_sear_id.setText("");
            }
        }
        catch (Exception e) {
            // TODO: handle exception
            Toast.makeText(getApplicationContext(), e.toString(),Toast.LENGTH_LONG).show();
        }
    }
    else
    {
        Et_sear_id.setError("Provide ID to Search");
    }

    }
}

class SearchDetail extends AsyncTask<String,String,String>
{
    //final String St_sear_id1=Et_sear_id.getText().toString();

    @Override
    protected void onPreExecute()
    {
        super.onPreExecute();
        PDialog=new ProgressDialog(Search_Id.this);
        PDialog.setMessage("Loading...");
        PDialog.setIndeterminate(false);
        PDialog.setCancelable(true);
        PDialog.show();
    }
    @Override
    protected String doInBackground(String... arg0) {
        final String st_id=Et_sear_id.getText().toString();

        // TODO Auto-generated method stub
        List<NameValuePair> params=new ArrayList<NameValuePair>();          
        params.add(new BasicNameValuePair("id",st_id));

        JSONParser jsonParser=new JSONParser();
        JSONObject json=jsonParser.makeHttpRequest(url_search_by_id_guna,"POST",params);

        //Log.d("Create Response", json.toString());

        try
        {
            //Toast.makeText(getApplicationContext(), "Comes into Try Block", Toast.LENGTH_LONG).show();
            JSONArray jsonarray = json.getJSONArray(REGISTER);

            for(int i=0;i<jsonarray.length();i++)
            {
                JSONObject jo=jsonarray.getJSONObject(i);

                int id   = jo.getInt(ID);
                String fname = jo.getString(FNAME);
                String lname= jo.getString(LNAME);
                String profile_for=jo.getString(PROFILEFOR);
                String age=jo.getString(AGE);

                Intent in=new Intent(getApplicationContext(),Search_Id_Detail.class);
                //i.putExtra("REGISTER", regs);
                in.putExtra("ID",id);
                in.putExtra("FNAME",fname);
                in.putExtra("LNAME",lname);
                in.putExtra("PROFILEFOR",profile_for);
                in.putExtra("AGE",age);
                startActivity(in);          
            }

        }
        catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return null;
    }
    protected void onPostExecute(String arg)
    {
        PDialog.dismiss();
    }
}
}
公共类搜索\u Id扩展活动实现OnClickListener
{
私有静态字符串url_search_by_id=“远程服务器中的php文件”;
专用静态最终字符串寄存器=“regs”;
私有静态最终字符串ID=“ID”;
私有静态最终字符串FNAME=“FNAME”;
私有静态最终字符串LNAME=“LNAME”;
私有静态最终字符串PROFILEFOR=“PROFILEFOR”;
私有静态最终字符串AGE=“AGE”;
私人对话;
编辑文本和搜索id;
按钮Btn_搜索;
TextView search\u id\u detail\u id、search\u id\u detail\u fname、search\u id\u detail\u lname、search\u id\u detail\u profilefor、search\u id\u detail\u age;
创建时的公共void(Bundle b)
{
super.onCreate(b);
setContentView(R.layout.search_id);
Et_sear_id=(EditText)findViewById(R.id.sear_Et_id);
Btn_Search=(按钮)findViewById(R.id.sear_Btn_Search);
Btn_Search.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
如果(v.equals(Btn_搜索))
{
//新建SearchDetail().execute();
最后一个字符串st_id=Et_sear_id.getText().toString();
如果(st_id.length()>0)
{
ArrayList后参数=新的ArrayList();
添加(新的BasicNameValuePair(“id”,st_id));
字符串响应=null;
尝试
{
response=CustomHttpClient.executeHttpPost(“远程服务器中的php文件”,后参数);
String res=response.toString();
//res=res.trim();
res=res.replaceAll(“\\s+”,”);
//错误.setText(res);
//Toast.makeText(getApplicationContext(),res,Toast.LENGTH_SHORT).show();
如果(相对等于(“是”))
{   
新建SearchDetail().execute();
Toast.makeText(getApplicationContext(),“Correct”,Toast.LENGTH\u SHORT.show();
}
其他的
{
Toast.makeText(getApplicationContext(),“不正确”,Toast.LENGTH\u SHORT.show();
Et_sear_id.setText(“”);
}
}
捕获(例外e){
//TODO:处理异常
Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
}
}
其他的
{
Et_sear_id.setError(“提供搜索id”);
}
}
}
类SearchDetail扩展了异步任务
{
//最后一个字符串St_sear_id1=Et_sear_id.getText().toString();
@凌驾
受保护的void onPreExecute()
{
super.onPreExecute();
PDialog=新建进度对话框(搜索Id.this);
设置消息(“加载…”);
PDialog.setUndeterminate(假);
PDialog.setCancelable(真);
PDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
最后一个字符串st_id=Et_sear_id.getText().toString();
//TODO自动生成的方法存根
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“id”,st_id));
JSONParser JSONParser=新的JSONParser();
JSONObject json=jsonParser.makeHttpRequest(url_search_by_id_guna,“POST”,params);
//d(“创建响应”,json.toString());
尝试
{
//Toast.makeText(getApplicationContext(),“进入Try块”,Toast.LENGTH_LONG.show();
JSONArray JSONArray=json.getJSONArray(寄存器);
对于(int i=0;i
我输入了用户的id,然后如果该id在用户的详细信息中可用,则必须显示。但它会根据标题显示日志


如果我能找到一个解决方案的话,学习android对我来说会很有帮助。

据我所知,问题是你得到的是实际的php文件,而不是处理此类文件的结果

这个问题实际上与android无关。尝试在web浏览器上键入相同的地址,您将看到您为我们发布的相同PHP文件


您需要配置一台服务器来处理该PHP文件并返回JSON响应。

似乎您传入的响应不是有效的JSON stringresponse不是JSON类型。生成异常的行数是多少?您是否可以显示日志响应的内容。(可能是连接到服务器的简单错误)@julien dumortier-W/System.err(1317):位于com.example.vivagha.Search\u Id\u guna$SearchDetail.doInBackground(Search\u Id\u guna.java:151)这是日志文件中显示的内容。正如@Budius所说的,我也认为您无法与服务器通信。它应该显示查询返回的文本。在这个响应中,我们希望看到类似这样的消息:“404 not Found not Found”“以便我们可以确认这是连接到的错误server@juliendumortier-我在执行PHP文件时出错。我将对PHP文件进行正确的更改。如果错误仍然存在,我将发布到此处,因为某些原因,我没有提供服务器详细信息。@juliendumortier:我执行了PHP文件,它给了我-{“id”:“4”,“fname”:“Gunaseelan”,“lname”:“Guna”,“profilefor”:“Self”,“age”:“0”,“success”:1,“message”:“Found”}.但我无法显示结果。它显示否values@guna西兰,我在另一个地方也犯了同样的错误application@NitinKarale结果是一种java.lang.String类型。我们正试图将其转换为JSONObject。这就是问题所在。@PHP文件中的gunaseelan获得了正确的结果。它工作正常。但突然所有文件都恢复正常ting errors是指登录和注册用户。它在解析数据org.json.JSONException:Value时出错
<?php

     /* Following code will list all products */

     //array for JSON response
     $response=array();

     $id=$_POST['id'];

     require_once 'vivagha_db_connect.php';
     //Connect to database
     $db=new DB_CONNECT();

     //get all products from products table
     $result=mysql_query("select *from regs where db_reg_id=$id") or die(mysql_error());

     //check for empty result
      if(mysql_num_rows($result)>0)
        {
          //looping through all results
          //products node
          //$response["regs"]=array();

          while($row=mysql_fetch_array($result))
          {
             //temp user array
             //$register=array();
             $response["id"]=$row["db_reg_id"];
             $response["fname"]=$row["db_reg_fname"];
             $response["lname"]=$row["db_reg_lname"];
             $response["profilefor"]=$row["db_reg_profilefor"];
             $response["age"]=$row["db_reg_age"];

             //push single product into final response array
             //array_push($response["regs"],$register);
             $response["success"]=1;
             $response["message"]="Found";
        }

        //success
        //response["success"]=1;

        //echo JSON response
        echo json_encode($response);
     }
     else
     {
        //no product found
        $response["success"]=0;
        $response["message"]="No Products Found";

         //echo no users JSON   
         //echo json_encode($response);
     }
    //} 
    ?>