无法从服务器获取图像到Android应用程序

时间:2015-10-20 08:54:12

标签: php android

我正在构建能够搜索用户并获取信息的应用程序。情况是,当我在模拟器上运行它一切都很好但是当我在我的真实服务器上运行时,有时我得到用户详细,有时不。 我不知道为什么我会得到一些用户而不是其他用户。我检查并且不存在的用户我收到失败的消息但是对于存在的其他用户我收到消息。

例如: 正确的结果:

  {"flag":"user found","users":[{"name":"nir","email":"nirb@g.com","mobile":"0543536434","image":"\/9j\/4AAQSkZJRgABAQAAAQABAAD\/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH\/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH\/wAARCAB4AHgDASIAAhEBAxEB\/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL\/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6\/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL\/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6\/9oADAMBAAIRAxEAPwD+hr\/gmP8A8Ex\/+CZ3j\/8A4Jnf8E7fHnjz\/gnb+xB408a+NP2IP2R\/FnjLxl4t\/ZH\/AGfPEXizxZ4s8Rfs+\/DzWPEXifxP4i1j4c3uq6\/4g1\/Vby71XWta1W8udT1PU7m6v9Qu57uaad\/t\/wD4dNf8Eo\/+kY37AH\/iFv7NX\/zsKP8Agk1\/yii\/4Jjf9mAfsWf+s1\/DOvv+gD4A\/wCHTX\/BKP8A6RjfsAf+IW\/s1f8AzsKP+HTX\/BKP\/pGN+wB\/4hb+zV\/87Cvv+igD4A\/4dNf8Eo\/+kY37AH\/iFv7NX\/zsKP8Ah01\/wSj\/AOkY37AH\/iFv7NX\/AM7Cvv8AooA+AP8Ah01\/wSj\/AOkY37AH\/iFv7NX\/AM7Cj\/h01\/wSj\/6RjfsAf+IW\/s1f\/Owr7\/ooA+AP+HTX\/BKP\/pGN+wB\/4hb+zV\/87Cj\/AIdNf8Eo\/wDpGN+wB\/4hb+zV\/wDOwr7\/AKKAPgD\/AIdNf8Eo\/wDpGN+wB\/4hb+zV\/wDOwo\/4dNf8Eo\/+kY37AH\/iFv7NX\/zsK+\/6KAPgD\/h01\/wSj\/6RjfsAf+IW\/s1f\/Owo\/wCHTX\/BKP8A6RjfsAf+IW\/s1f8AzsK+\/wCigD8If+Cm\/wDwTH\/4JneAP+CZ3\/BRPx54D\/4J2\/sQeC\/Gvgv9iD9rfxZ4N8ZeE\/2R\/wBnzw74s8J+LPDv7PvxK1jw74n8MeItH+HNlqugeINA1Wxs9V0XWtKvLbU9M1O1tL+wu4buCGcFfb\/\/AAVk\/wCUUX\/BTr\/swD9tH\/1mv4qUUAH\/AASa\/wCUUX\/BMb\/swD9iz\/1mv4Z19\/18Af8ABJr\/AJRRf8Exv+zAP2LP\/Wa\/hnX3\/QAUUVUnvra3JEsm0j29yPX\/AGT\/AIk9Wk27RTb7JNvtsr\/156kylGKcpSUUt22kt2ur8vz3s27dFZsWrWEzbI5stxxjGeSB1PfHH4jJIOZbm9t7a2kuJHwiq5De6iQ+vptPXpkknBIfJO6XLK70Ss7t6LTT+teqbIVei4ykqsHGCvKSkmkrtXbvZbdX1Wrs2W2dV+8cfn9PQ\/57k80zzov74\/I\/4V+Of7RH7ffiTwFrWoaN4W8q6ms50jZDN5ZAM7qesL5O1c44GAM5JyfmD\/h5x8Xv+gdH\/wCBqf8AyJX7FlPgXx5nGAoZhh8NgoUa8YzpqtjIUqjhJJxk4SjdJxs0\/wDFq7a\/zPxD9LPwm4czbF5Pi8ZmVXE4Oo6VaWFy6rXoqcZzhKKqU5uLacHdXutG1rY\/or86L++PyP8AhQJoj0cfr7j0\/wBk\/wD1up\/nU\/4eb\/F7\/oHR\/wDgan\/yLSr\/AMFOPi8P+YbEf969T1b\/AKdPbvxgrk8bq9H\/AIl48Q\/+fWW\/+HCl\/keKvpn+DvWvnPT\/AJk+JXV33n2Sdt9bXumf0XKQwypyPXn6d\/8APuDzS1+Z37K37ZN\/8XrnTtI8QSx2+p3RtA1usgl5kcK3Plp\/ERwBjGDlgWr9L0ZZF3Kcj1\/Ej+mfp34NflPEfDWbcK5jUyvN6Ko4mmr2jLmhKPNKPNCa0lH3bpq6d97q5\/Q3A\/HXD3iHklPPuHMTLEYKo4xvUg6dWE3FtwqU3JypzSteMtd+qkOooorwD7E+AP8AgrJ\/yii\/4Kdf9mAfto\/+s1\/FSij\/AIKyf8oov+CnX\/ZgH7aP\/rNfxUooAP8Agk1\/yii\/4Jjf9mAfsWf+s1\/DOvv+vgD\/AIJNf8oov+CY3\/ZgH7Fn\/rNfwzr7\/oA8k+Jvxg8J\/DGznk8Q3q20ghWSMmaOM4JOD+8YY49MnoME4r8avjt+3f421PxnFYfCvWmm09nuIm8u\/lxvDhEG2BnUchgAeR0yWBz2f\/BU3xTrGjeI\/Dmn2Nz5Vvd29qs0e0\/Optb1m5DA8lFJGD25yAa+Cf2W7PwlqnxE0K28S2puUnu180GRUB3XMfmY3K2M7hySeSc5xX9Z+F\/h3w9g+D4cd5rg5ZxVrYLEVoYCcIVKMYw9pFt058q5k6bcXzaJq6b3\/wA6vHjxn4yzLxKxHhLw9mkeHcPh80wOErZvSnUo4lyqTpzilWpyl7jVS004Xta3wtv26x\/bR+P2g6iH1zU5o7dCPMY3t6uNruG+\/wAcjPXpgZIzkfVGqft96Pe\/DS2hGvZ8SN54uV\/tBSxVowqclw\/3txw2RgjoRkwftmeEvgtovw81xvDej\/ZtYRLvyphdRPgiGcr8ohUkkqDjd14yRnP4h19zw1wnwT4i5Zhs6\/1b\/sR4PFxSo06VKi6\/JBtc6i53pPmdldO\/flufk3GniF4peC+d5hwu+NVxRHMcuTeJq4nEYhYVVKrX7uU\/Z8lePsbXs1ZvVt69n4+8RP4r8V6trkknmtey7y+7dnBfuSfXsecnkgAnjK39A8Oaj4ju0s7FGMjyJGp8t2G5iAOn4Z78gYJ6\/avw\/wD2Cfi34wt4b62Fr5EiRzKJLWfJjcv\/ALeAcEZ79R82Of1rMM\/4d4WwlKnmmZ4XL6NKlTpUo158t4U1OMVFJdor\/h73\/njJOD+M+Pcfiq2RZJj85xGIr1K+InhaTqWqVqk5SlJyknZyu27vzbdrfBdFfq5J\/wAE2\/icbR1SOz87y12k28+S\/wAwP8XTuehxjk5FfNvxJ\/Yq+Knw4gubzVVgaGBd7iK1nU7d0mMEs3OAc+oKnoGryMt8SeCc1r\/VsJxBgJ15SUadL2r5qjbSXKnFbu3lqrNvf6TOfBHxSyHBzx+YcH5tTwlOLnVr\/V1yUopNvnfPdWSbe6tbVt2PKv2fviU\/wx8e6f4h+0\/Z0tpIG3+aYx+7mD8tu4+7n2BbgjJr9q\/DP\/BQT4bjR4BqviFftv8Ay1\/0+3\/D7zk9+\/qRjqa\/ntv9PuNOna3uFKuuc5Vl6MVPBHtn15HrmqNcXF3hnw1xxiKOOzRVlWp04whWw8oRcqcXJxTbi7rV6dHZ7s9Pw38c+OfCnB4vKs

当它失败时我得到:

{"flag":"user not found"}

对于其他现有用户:

 <html><head><meta http-equiv="refresh" content="0;http://biz.nf/errors/403.html" /></head><body></body></html>

我不知道为什么会这样:

我刚刚发现如果我脱掉那两行

$img_path = "images/".$row["image"];

$imgdata = base64_encode(file_get_contents($img_path));

and 
"image" => $imgdata

结果很好。我的图像解码过程是否正确?因为在1个用户中我获得了图像但在其他用户中没有。

这是我的java代码:

  package com.example.matant.gpsportclient.Controllers;

import android.content.Intent;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.support.v7.internal.widget.AdapterViewCompat;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

import com.example.matant.gpsportclient.AsyncResponse;
import com.example.matant.gpsportclient.R;
import com.example.matant.gpsportclient.Utilities.ImageConvertor;
import com.example.matant.gpsportclient.Utilities.InviteUsersArrayAdapter;
import com.example.matant.gpsportclient.Utilities.InviteUsersListRow;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

import java.util.List;

public class InviteUsersActivity extends AppCompatActivity implements AsyncResponse, View.OnClickListener{
    private EditText editTextSearch;
    private Button btnSave,btnDiscard;
    private ListView usersListView;
    private List<InviteUsersListRow> rowUser;
    private DBcontroller dbController;
    public static final String EXTRA_USERS  = "";
    ListView listViewUsers;
    List<InviteUsersListRow> rowUsers;
    private InviteUsersArrayAdapter Useradapter = null;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_invite_users);

        editTextSearch = (EditText) findViewById(R.id.editTextSearch);
        btnSave = (Button) findViewById(R.id.ButtonSave);
        btnDiscard = (Button)findViewById(R.id.ButtonDiscard);
        editTextSearch.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if(editTextSearch.getText().length() > 0) {
                    Log.d("send request","searching...");
                    sendDataToDBController();
                }
                else{
                    Log.d("do nothing","doing nothing");
                   if(Useradapter != null) {
                       Log.d("do nothing","clear adapter");
                       /*Useradapter.clear();
                       Useradapter.notifyDataSetChanged();*/
                       listViewUsers.setAdapter(null);
                   }
                }


            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
        btnDiscard.setOnClickListener(this);
        listViewUsers = (ListView) findViewById(R.id.listViewusers);
        listViewUsers.setItemsCanFocus(true);
        btnSave.setOnClickListener(this);
    }

    @Override
    public void handleResponse(String resStr) {
        Log.d("invite_Response", resStr);
        if (resStr != null) {
            try {

                JSONObject json = new JSONObject(resStr);
                String flg = json.getString("flag");

                Log.d("flag",flg);
                switch (flg){

                    case "user found":{
                        JSONArray jsonarr = json.getJSONArray("users");
                        Log.d("array",jsonarr.toString());
                        rowUsers = new ArrayList<InviteUsersListRow>();
                        for(int i = 0; i < jsonarr.length();i++){
                            {
                                Log.d("user is", jsonarr.getJSONObject(i).toString());
                                String name = jsonarr.getJSONObject(i).getString("name");
                                String mobile = jsonarr.getJSONObject(i).getString("mobile");
                                Bitmap profileImage = ImageConvertor.decodeBase64(jsonarr.getJSONObject(i).getString("image"));
                                int  imgStatus = R.drawable.add_user_50;
                                if(Useradapter != null){
                                    Log.d("Useradapter invited size:",String.valueOf(Useradapter.getUsers().size()));
                                    for(int j = 0 ;j<Useradapter.getUsers().size();j++)
                                    {
                                        if(Useradapter.getUsers().get(j).getDesc().equals(mobile))
                                        {
                                             imgStatus = R.drawable.remove_user_50;
                                            Log.d("set status2.1",String.valueOf(imgStatus));
                                            break;
                                        }
                                    }
                                }else{

                                    imgStatus = R.drawable.add_user_50;
                                    Log.d("set status1",String.valueOf(imgStatus));
                                }
                                InviteUsersListRow rowUser = new InviteUsersListRow(imgStatus, name, mobile,profileImage);
                                rowUsers.add(rowUser);
                            }
                            if(Useradapter == null)
                                Useradapter = new InviteUsersArrayAdapter(this,R.layout.invite_users_listview_row,rowUsers);
                            else {
                                {
                                    Useradapter.setData(rowUsers);
                                    Useradapter.notifyDataSetChanged();
                                }
                            }
                            listViewUsers.setAdapter(Useradapter);

                        }
                        break;
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }else
             Log.d("ServiceHandler", "Couldn't get any data from the url");
    }

    @Override
    public void sendDataToDBController() {

        String username = editTextSearch.getText().toString();
        BasicNameValuePair tagreq = new BasicNameValuePair("tag", "search_user");
        BasicNameValuePair name = new BasicNameValuePair("name", username);
        List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
        nameValuePairList.add(tagreq);
        nameValuePairList.add(name);
        dbController = new DBcontroller(this,this);
        dbController.execute(nameValuePairList);

    }





    @Override
    public void preProcess() {

    }

    @Override
    public void onClick(View v) {

        switch (v.getId())
        {
            case R.id.ButtonDiscard:
            {
                Intent i = new Intent();
                setResult(RESULT_CANCELED,i);;
                finish();
                break;
            }

            case R.id.ButtonSave:
            {

                if(Useradapter != null )
                {
                    if(Useradapter.getUsers().size() > 0)
                    {
                        Log.d("adapter size:",String.valueOf(Useradapter.getUsers().size()));
                        Intent i = getIntent();


                        JSONArray jsonArr = new JSONArray();
                        for(int j = 0 ;j < Useradapter.getUsers().size();j++)
                        {

                            try {
                                JSONObject jsonObj = new JSONObject();
                                jsonObj.put("name",Useradapter.getUsers().get(j).getTitle());
                                jsonObj.put("mobile",Useradapter.getUsers().get(j).getDesc());
                                jsonArr.put(jsonObj);
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }
                        Log.d("json users",jsonArr.toString());
                        i.putExtra("userList", jsonArr.toString());
                        setResult(RESULT_OK, i);
                        finish();
                    }
                    else{
                        Log.d("adapter size <0", "search is empty");
                        Toast.makeText(this, "Please select user!", Toast.LENGTH_SHORT).show();
                    }
                }
            }
            break;

        }

    }
}

这是服务器端:

<?php
/**
 * Created by PhpStorm.
 * User: matant
 * Date: 9/24/2015
 * Time: 11:29 AM
 */
include 'response_process.php';
class SearchUser implements ResponseProcess{


    public function dataProcess($dblink)
    {
        $output = array();
        $name = $_POST["name"];
        $output["flag"]="user found";
        $query = "SELECT * FROM users WHERE users.name LIKE '$name%'";

        $result = mysqli_query($dblink,$query) or die (mysqli_error($dblink));

        if(!$result){
            $output["flag"] = "query failed";
            $output["query_msg"] = $result;

        }else{
            $no_of_rows = mysqli_num_rows($result);
            if ($no_of_rows < 1)
                $output["flag"]="user not found";   //user not found
            else{
                $output["flag"]="user found";
                $output["users"] = array();
                while($row = mysqli_fetch_assoc($result))
                {
                    $img_path = "images/".$row["image"];

                    $imgdata = base64_encode(file_get_contents($img_path));
                    $output["users"][] =  array("name"=> $row["name"],"email"=> $row["email"],"mobile" => $row["mobile"],"image" => $imgdata);
                }


            }



        }

        echo json_encode($output);

    }
}

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。 由于某种原因,图像的大小对传输有影响,所以我将位图的大小调整了50%。

现在一切正常。