Hello developer i'm developing a web base chat system using android and php (laravel) so in my case i implement a Rest API to send chat message using laravel.my problem is when i post data to the server (send messages) no any case messages save on the database.my from my android client response always go to the "onFailure" and display this error
Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
i try to lots of ways unfortunately i can't find a proper way to solve out this problem.any one can help me it's a valuable help to me.Thank you...
this is my API code
public function PostDataToChatRoom(Request $request){
$ChatRoom=$request->ChatroomId;
if($ChatRoom == '1'){
}
elseif ($ChatRoom == "2"){
$message= new Message();
$message->SenderId = $request->input('SenderId');
$message->ChatroomId = $request ->input('ChatroomId');
$message->MessageTxt =$request ->input('MessageTxt');
$message->SenderName=$request->input('SenderName');
if($message->save())
{
event(
new ForxChatEvent($message)
);
return response()->json([$message],200);
}
}
else{
echo 'aaa';
}
}
this is my API response data
[
{
"SenderId": "123",
"ChatroomId": "2",
"MessageTxt": "yooo",
"SenderName": "Test",
"updated_at": "2018-06-18 12:44:41",
"created_at": "2018-06-18 12:44:41",
"id": 189
}
]
this is my android code segment ...Using retrofit library to the post data to the server
ApiInterface class
public interface PostChatRoomMessage {
@POST("/SendToChatRoom")
Call<Message> PostMessage(@Body Message message);
}
Message Class
public class Message implements Serializable {
@SerializedName("messages")
@Expose
private List<Message> messages;
public List<Message> getMessages() {
return messages;
}
public void setMessages(List<Message> messages) {
this.messages = messages;
}
@SerializedName("SenderId")
@Expose
private String senderId;
@SerializedName("ChatroomId")
@Expose
private String chatroomId;
@SerializedName("MessageTxt")
@Expose
private String messageTxt;
@SerializedName("SenderName")
@Expose
private String senderName;
@SerializedName("updated_at")
@Expose
private String updatedAt;
@SerializedName("created_at")
@Expose
private String createdAt;
@SerializedName("id")
@Expose
private int id;
public String getSenderId() {
return senderId;
}
public void setSenderId(String senderId) {
this.senderId = senderId;
}
public String getChatroomId() {
return chatroomId;
}
public void setChatroomId(String chatroomId) {
this.chatroomId = chatroomId;
}
public String getMessageTxt() {
return messageTxt;
}
public void setMessageTxt(String messageTxt) {
this.messageTxt = messageTxt;
}
public String getSenderName() {
return senderName;
}
public void setSenderName(String senderName) {
this.senderName = senderName;
}
public String getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(String updatedAt) {
this.updatedAt = updatedAt;
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}`}
`
Send Message method
public void SendMessage(){
String SenderId="123";
String ChatroomId="2";
String Message=messageEdit.getText().toString();
String SenderName="yooo";
if(TextUtils.isEmpty(Message)){
AlertDialog.Builder builder=new AlertDialog.Builder(Chat.this);
builder.setMessage("Please add Some Message")
.setNegativeButton("Ok",null);
AlertDialog alertDialog=builder.create();
alertDialog.show();
}
else {
Log.e("not empryy","not empty");
try{
Message message=new Message();
message.setSenderId(SenderId);
message.setChatroomId(ChatroomId);
message.setMessageTxt(Message);
message.setSenderName(SenderName);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new okhttp3.Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request request = chain.request().newBuilder()
.addHeader("Content-Type", "text/html; charset=UTF-8")
.build();
return chain.proceed(request);
}
}).addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.build();
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setLenient();
Gson gson = gsonBuilder.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Config.Api)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
PostChatRoomMessage service=retrofit.create(PostChatRoomMessage.class);
Call<Message> call = service.PostMessage(message);
Log.d("onResponse", "There rtutrutris an error");
call.enqueue(new Callback<Message>() {
@Override
public void onResponse(Call<Message> call, Response<Message>response) {
Log.d("responce sucessregister", response.message());
messageEdit.setText("");
}
@Override
public void onFailure(Call<Message> call, Throwable t) {
Log.d("OnbbbbResponse", t.getMessage());
} });
}
catch (Exception e){
Log.d("onResponse", "There is an error");
e.printStackTrace();
} }
}