Я занимаюсь разработкой android приложения. Я пытаюсь отправить данные на сервер с помощью запроса Post. Я посылаю JsonObject как необработанный параметр тела. Вот мой код.
final NetworkInfo networkInfo = connectivityManager
.getActiveNetworkInfo();
final OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(60, TimeUnit.SECONDS);
okHttpClient.setConnectTimeout(60, TimeUnit.SECONDS);
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(Constants.END_POINT)
.setClient(new OkClient(okHttpClient)).setLogLevel(RestAdapter.LogLevel.FULL).build();
api = restAdapter.create(API.class);
if (networkInfo != null && networkInfo.isConnected()) {
try {
List<Contacts> sContacts = ContactDatabase
.getDatabase(context.getApplicationContext())
.contactsDao()
.getunlistedContacts("false");
JSONArray mContactList = new JSONArray();
for (int i = 0; i < sContacts.size(); i++) {
try {
Contacts obj = sContacts.get(i);
Gson gson = new Gson();
JSONObject contactJsonObject = new JSONObject(gson.toJson(obj));
Log.e("ContactObject++", contactJsonObject.toString());
mContactList.put(contactJsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
}
JSONObject mContactsJsonObject = new JSONObject();
mContactsJsonObject.put("contact_list", mContactList);
mContactsJsonObject.put(Constants.APIKeys.DEVICE_ID, context.getSharedPreference(Constants.SharedKey.DEVICE_ID));
mContactsJsonObject.put(Constants.APIKeys.ID, context.getSharedPreference(Constants.SharedKey.USER_ID));
JSONObject mJsonObject = new JSONObject(api.checkContacts(mContactsJsonObject).toString());
if (mJsonObject.getBoolean(Constants.APIKeys.STATUS)) {
JSONArray mUserListJsonArray = mJsonObject.getJSONArray(Constants.APIKeys.USER_LIST);
for (int i = 0; i < mUserListJsonArray.length(); i++) {
JSONObject mUserJsonObject = mUserListJsonArray.getJSONObject(i);
String ContactId = mUserJsonObject.getString(Constants.APIKeys.LOCAL_ID);
Contacts mContacts = ContactDatabase
.getDatabase(context)
.contactsDao()
.getUserById(ContactId);
JSONObject userData = mUserJsonObject.getJSONObject(Constants.APIKeys.USER_DETAILS);
mContacts.setUserid(userData.getString(Constants.APIKeys.ID));
mContacts.setUserName(userData.getString(Constants.APIKeys.USERNAME));
mContacts.setImage(userData.getString(Constants.APIKeys.USER_IMAGE));
mContacts.setStatus(userData.getString(Constants.APIKeys.STATUS));
if (!mContacts.getPhone().equalsIgnoreCase(context.getSharedPreference(Constants.SharedKey.PHONE))) {
ContactDatabase.getDatabase(context.getApplicationContext())
.contactsDao()
.updateContacts(mContacts);
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
И интерфейс API класса
@POST("/check_Contacts")
JsonObject checkContacts(@Body JSONObject mJsonObject);
И мой код PHP
public function check_Contacts(){
$this->load->database();
$this->load->model('User_Model');
$this->load->model('Contact_Model');
$postdata = file_get_contents("php://input");
$phone='';
$name='';
$device_id='';
$JsonData='';
$contactArray;
$JsonData=json_decode($postdata,true);
$contactArray=$JsonData[contactList];
$device_id=$JsonData[deviceId];
$user_id=$JsonData[userid];
if($this->User_Model->checkDevice($user_id,$device_id))
{
$arr = [];
foreach ($contactArray as $contactObject) {
$id=$contactObject[userid];
$name=$contactObject[name];
$phone=$contactObject[phone];
if($this->User_Model->phone_exists($phone))
{
$user_exist=true;
$Status=true;
$StatusCode=Success;
$userData=$this->User_Model->getUser($phone);
$user['user_data']=$userData;
$user['local_id']=$id;
$user['user_status']=true;
$arr[]=$user;
$user_status=1;
if($this->Contact_Model->checkContact($user_id, $phone)){
$user_status=0;
$user_exist=true;
$message="User exists with the provided no.";
$StatusCode=user_exist;
$Status=true;
}else{
$this->Contact_Model->addContact($user_id, $phone, $name, $user_status);
}
}else
{
$user_status=0;
$this->Contact_Model->addContact($user_id, $phone, $name, $user_status);
$user_exist=false;
$message="No User with the provided no.";
$StatusCode=user_not_exist;
$Status=true;
}
}
$result[contactList]=$arr;
$Status=true;
$StatusCode=Success;
}else
{
$message="Invalid device";
$StatusCode=invalid_parameter;
$Status=false;
}
$result[message]=$message;
$result[status]=$Status;
$result[statusCode]=$StatusCode;
echo json_encode($result);
}
Я получаю эту ошибку, в то время как вызов из Android
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message: Undefined index: contact_list</p>
<p>Filename: controllers/Api.php</p>
<p>Line Number: 791</p>
<p>Backtrace:</p>
<p style="margin-left:10px">
File: /home/zinedroi/public_html/swiftme/application/controllers/Api.php<br />
Line: 791<br />
Function: _error_handler </p>
<p style="margin-left:10px">
File: /home/zinedroi/public_html/swiftme/index.php<br />
Line: 315<br />
Function: require_once </p>
</div>
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message: Undefined index: device_id</p>
<p>Filename: controllers/Api.php</p>
<p>Line Number: 792</p>
<p>Backtrace:</p>
<p style="margin-left:10px">
File: /home/zinedroi/public_html/swiftme/application/controllers/Api.php<br />
Line: 792<br />
Function: _error_handler </p>
<p style="margin-left:10px">
File: /home/zinedroi/public_html/swiftme/index.php<br />
Line: 315<br />
Function: require_once </p>
</div>
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message: Undefined index: id</p>
<p>Filename: controllers/Api.php</p>
<p>Line Number: 793</p>
<p>Backtrace:</p>
<p style="margin-left:10px">
File: /home/zinedroi/public_html/swiftme/application/controllers/Api.php<br />
Line: 793<br />
Function: _error_handler </p>
<p style="margin-left:10px">
File: /home/zinedroi/public_html/swiftme/index.php<br />
Line: 315<br />
Function: require_once </p>
</div>{"message":"Invalid device","status":false,"status_code":402}
Но он прекрасно работает при вызове этого API из клиента API POSTman с теми же данными. Чего мне не хватает в android? Пожалуйста, помогите мне найти решение.