我正在构建能够搜索用户并获取信息的应用程序。情况是,当我在模拟器上运行它一切都很好但是当我在我的真实服务器上运行时,有时我得到用户详细,有时不。 我不知道为什么我会得到一些用户而不是其他用户。我检查并且不存在的用户我收到失败的消息但是对于存在的其他用户我收到消息。
例如: 正确的结果:
{"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);
}
}
答案 0 :(得分:0)
现在一切正常。