آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در ارسال اطلاعات به سرور بااستفاده از retrofit

SeyyedH  7 سال پیش  7 سال پیش
0 0

قصد دارم رکورد هایی رو به سرور ارسال کنم و اون هارو در دیتابیس انلاین ذخیره کنم اما متاسفانه موفق نمیشم. کد ها بصورت زیر هستن:

کلاس اصلی:

public class MainActivity extends Activity {

private Button btnOK;

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

btnOK = (Button) findViewById(R.id.btnOK);
btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

PostRetrofitModel post=new PostRetrofitModel("title","body");
String postJson=new Gson().toJson(post);
Log.i("LOG","Post : " + postJson);
APIService service= ApiClient.getClient().create(APIService.class);
Call<MyResponseBody> call=service.newPost(postJson);
call.enqueue(new retrofit2.Callback<MyResponseBody>() {
@Override
public void onResponse(Call<MyResponseBody> call, Response<MyResponseBody> response) {
MyResponseBody result=response.body();
Log.i("TAG","error="+result.isError());
Log.i("TAG","message="+result.getMessage());



}

@Override
public void onFailure(Call<MyResponseBody> call, Throwable t) {

Log.i("TAG","onFailure="+ t.getLocalizedMessage());

}
});

}
});

}



}

کلاس api service

public interface APIService {


@GET("index.php")
Call<PostRetrofitModel> getPosts();

@Headers({
"content-type: application/x-www-form-urlencoded"
})
@FormUrlEncoded
@POST("new_post.php")
Call<MyResponseBody> newPost(@Field("data") String data);
}

کلاس myresponsebody

public class MyResponseBody implements Serializable {


private boolean error;
private String message;

public boolean isError() {
return error;
}

public void setError(boolean error) {
this.error = error;
}



public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}


}

کد php

<?php
$connection = mysqli_connect("localhost","root","","note_db");

if (mysqli_connect_errno()){
echo "Connection Failed" . mysqli_connect_error();
}

$name = $_GET['name'];
$last_name = $_GET['last_name'];

$result = mysqli_query($connection,"INSERT INTO task VALUES (0,'$name','$last_name')");

mysqli_close($connection);

در کلاس اصلی onResponse اجرا نمیشه و onFailure اجرا میشه و در لاگ ارور زیر رو چاپ میکنه

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

0 0
کلا به ترجمه (در حد جمله) و جستجو اعتقادی نداریدا :) همین چند روز پیش مشابه همین خطا رو داشتید، برنامه یه چیز میخواد وب سرویس یه چیز دیگه خروجی میده. (7 سال پیش)
0 0
این رو متوجه هستم اما نمیدونم چطور باید رفعش کنم متغیر سمت کلاینت رو object کردم اما جواب نداد توی stackoverflow هم نتونستم به جواب برسم (7 سال پیش)
0 0
این کدی که نوشتید تنها در صورتی که به دیتابیس وصل نشه خروجی میده، اگر انتظار خروجی از سرور ندارید سمت کلاینت مشابه یکی از جوابای این سوال لینک عمل کنید. (7 سال پیش)
0 0
مشکلش چیه که خروجی نمیده؟ من میخوام خروجی بده، بدون خروجی که فایده نداره ... توی ساخت کلاس های مدل اشتباه کردم؟ (7 سال پیش)
0 0
من عین این اموزش رو هم انجام دادم اما باز هم خطا میده لینک (7 سال پیش)
0 0
جمله اول پیام قبلی من رو بخونید دوباره تا متوجه مشکل بشید. (7 سال پیش)
0 0
اشکال در ساختن کلاس های مدل بود که باید باتوجه به json میساختم اما توی ساختشون واقعا گیج شدم (7 سال پیش)
0 0
دوست عزیز وقتی کد php شما هیچ خروجی نداره (بجز زمانی که خطای عدم اتصال به دیتابیس بده) اونوقت مدل response مگه فرقی داره چه ساختاری داشته باشه. (7 سال پیش)
0 0
این کد از آموزش های سایت گرفتم ولی مشکلش رو متوجه نمیشم چرا خط های بعد if اجرا نمیشن؟ (7 سال پیش)
0 0
چون خروجی نداره میگید اجرا نمیشه؟ اگر بله یه چند روزی php مطالعه بفرمایید، متوجه میشید که کدها اجرا میشن. (7 سال پیش)
0 0
خروجی insert کردن مقادیر در دیتابیس هست دیگه ... البته من روی سوال قبلی هم که در این مورد پرسیدم به مشکل خوردم (7 سال پیش)
0 0
اگر با کتابخونه retrofit کار کردین میتونم چندتا سوال توی تلگرام بپرسم ازتون؟ (7 سال پیش)
0 0
خروجی mysqli_query یه boolean هست که مقدارش داخل result قرار میگره، بسته به نیازتون باید چیزی که میخوایید رو چاپ کنید، راجب Retrofit هم اگر به این سوال مربوط نیست در تاپیک جداگانه بنویسید، من اداعایی ندارم، اگر کسی بلد باشه راهنمایی میکنه، تلگرام جایی مناسبی برای این کار نیست به نظرم. (7 سال پیش)
0 0
خب نکته ای که هست اینه که من توی لاگ کت جیسونم از آخر به اول چاپ میشه یعنی اول name توی جیسون نوشته و بعد آی دی و توی دیتابیس هم یک مقدار خالی ثبت میشه و این ارور رو هم دارم، که میگه آبجکت میخواد ولی استرینگه مقدار در صورتیکه json با } شروع میشه (7 سال پیش)
0 0
خب ظاهرا بعد از 5 روز کسی پیدا نمیشه که بتونه راهنمایی کنه (7 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .