Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发送字符串值作为参数在Android中出现强制关闭错误_Android_Android Layout_Android Intent_Android Activity - Fatal编程技术网

发送字符串值作为参数在Android中出现强制关闭错误

发送字符串值作为参数在Android中出现强制关闭错误,android,android-layout,android-intent,android-activity,Android,Android Layout,Android Intent,Android Activity,我想在android中向我的模型类发送文本 模型类如下所示 public class ChatMessage { int id; String OriginalMsgThreadId; String SenderUserInfoId; String ReceiverUserInfoId; String MessageStatus;// Pending-Sent-Recieved-Read int isPending; String

我想在android中向我的模型类发送文本 模型类如下所示

    public class ChatMessage {
    int id;
    String OriginalMsgThreadId;
    String SenderUserInfoId;
    String ReceiverUserInfoId;
    String MessageStatus;// Pending-Sent-Recieved-Read
    int isPending;
    String MessageText;
    String MediaURL;
    String MediaMIMEType;
    float MediaSize;
    String MediaName;
    String Latitude;
    String Longitude;
    String ThumbImage;
    String SendTimeStamp;
    String ReceiveTimeStamp;



    public ChatMessage() {
    }

    public ChatMessage(String originalMsgThreadId, String senderUserInfoId, String receiverUserInfoId, String messageStatus, int isPending, String messageText, String mediaURL, String mediaMIMEType, float mediaSize, String mediaName, String latitude, String longitude, String thumbImage, String sendTimeStamp, String receiveTimeStamp) {
        OriginalMsgThreadId = originalMsgThreadId;
        SenderUserInfoId = senderUserInfoId;
        ReceiverUserInfoId = receiverUserInfoId;
        MessageStatus = messageStatus;
        this.isPending = isPending;
        MessageText = messageText;
        MediaURL = mediaURL;
        MediaMIMEType = mediaMIMEType;
        MediaSize = mediaSize;
        MediaName = mediaName;
        Latitude = latitude;
        Longitude = longitude;
        ThumbImage = thumbImage;
        SendTimeStamp = sendTimeStamp;
        ReceiveTimeStamp = receiveTimeStamp;
    }
}
我调用ChatMessage的函数如下

private boolean sendChatMessage(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
        String currentDateandTime = sdf.format(new Date());
        String messageText=chatText.getText().toString();
        ChatMessage chatMessage = new ChatMessage(orgMsgThreadId, loginUserInfoId, receiverUserInfoId, "Sent", 1,  messageText, "", "", 0 , "", "", "", "", currentDateandTime, currentDateandTime);
        long messageId = db.SendMessage(chatMessage);
        chatMessageAdapter.add(chatMessage);
        SyncMessageToServer(chatMessage);

        if(messageId != 0) {
            return true;
        }
        else {
            return false;
        }
    }
这是我的SyncMessageToServer方法

public boolean SyncMessageToServer(ChatMessage chatMessage){
    boolean sentStatus = false;
    String msgText=chatMessage.getMessageText();
    String fileUrl=chatMessage.getMediaURL();
    int isPending = chatMessage.getIsPending();
    Toast.makeText(getApplicationContext(), " = ---loginUserInfoId = " + chatMessage.getSenderUserInfoId() + " receiverUserInfoId = " + receiverUserInfoId, Toast.LENGTH_LONG).show();
    chatText.setText("");

    JSONObject json = null;
    String str = "";

    HttpResponse response;
    HttpClient myClient = new DefaultHttpClient();
    HttpPost myConnection = new HttpPost("http://192.168.1.2/AndroidApp/SendMessage?messageText="+msgText+"&senderUserInfoId="+loginUserInfoId+"&recieverUserInfoId="+receiverUserInfoId+"&url="+fileUrl+"&isGroupMsg="+false);

    try {
        response = myClient.execute(myConnection);
        str = EntityUtils.toString(response.getEntity(), "UTF-8");

    } catch (ClientProtocolException e) {
        Toast.makeText(getApplicationContext(),"message sending Failed!", Toast.LENGTH_LONG).show();
        //e.printStackTrace();
    } catch (IOException e) {
        //e.printStackTrace();
    }

    try{
        JSONArray jArray = new JSONArray(str);
        //  GetMessage(receiverUserInfoId);
    } catch ( JSONException e) {
        //e.printStackTrace();
    }
    return true;
}
public boolean SyncMessageToServer(ChatMessage chatMessage){
        boolean sentStatus = false;
        String msgText=chatMessage.getMessageText();
        String fileUrl=chatMessage.getMediaURL();
        int isPending = chatMessage.getIsPending();
        Toast.makeText(getApplicationContext(), " = ---loginUserInfoId = " + chatMessage.getSenderUserInfoId() + " receiverUserInfoId = " + receiverUserInfoId, Toast.LENGTH_LONG).show();
        chatText.setText("");

        JSONObject json = null;
        String str = "";

        HttpClient myClient = new DefaultHttpClient();

        HttpPost myConnection = new HttpPost("http://192.168.1.2/AndroidApp/SendMessage");

        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("messageText", msgText));
            nameValuePairs.add(new BasicNameValuePair("senderUserInfoId", loginUserInfoId));
            nameValuePairs.add(new BasicNameValuePair("recieverUserInfoId", receiverUserInfoId));
            nameValuePairs.add(new BasicNameValuePair("url", fileUrl));
            nameValuePairs.add(new BasicNameValuePair("isGroupMsg", "false"));
            myConnection.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = myClient.execute(myConnection);
            str =EntityUtils.toString(response.getEntity()).toString();

        } catch (ClientProtocolException e) {
            Toast.makeText(getApplicationContext(),"message sending Failed!", Toast.LENGTH_LONG).show();
            //e.printStackTrace();
        } catch (IOException e) {
            //e.printStackTrace();
        }

        try{
            JSONArray jArray = new JSONArray(str);
            //  GetMessage(receiverUserInfoId);
        } catch ( JSONException e) {
            //e.printStackTrace();
        }
        return true;
    }
如果我写的是“你好”,那么这是一个非常接近的错误 但是如果我写的是“你好”,那么它运行得很顺利

我在这里做错了什么?

使用以下代码

public class ChatMessage {
        int id = 0;
        String OriginalMsgThreadId = "";
        String SenderUserInfoId = "";
        String ReceiverUserInfoId = "";
        String MessageStatus = "";// Pending-Sent-Recieved-Read
        int isPending = 0;
        String MessageText = "";
        String MediaURL = "";
        String MediaMIMEType = "";
        float MediaSize = 0.0f;
        String MediaName = "";
        String Latitude = "";
        String Longitude = "";
        String ThumbImage = "";
        String SendTimeStamp = "";
        String ReceiveTimeStamp = "";

        public ChatMessage(String originalMsgThreadId, String senderUserInfoId,
                String receiverUserInfoId, String messageStatus, int isPending,
                String messageText, String mediaURL, String mediaMIMEType,
                float mediaSize, String mediaName, String latitude,
                String longitude, String thumbImage, String sendTimeStamp,
                String receiveTimeStamp) {
            this.OriginalMsgThreadId = originalMsgThreadId;
            this.SenderUserInfoId = senderUserInfoId;
            this.ReceiverUserInfoId = receiverUserInfoId;
            this.MessageStatus = messageStatus;
            this.isPending = isPending;
            this.MessageText = messageText;
            this.MediaURL = mediaURL;
            this.MediaMIMEType = mediaMIMEType;
            this.MediaSize = mediaSize;
            this.MediaName = mediaName;
            this.Latitude = latitude;
            this.Longitude = longitude;
            this.ThumbImage = thumbImage;
            this.SendTimeStamp = sendTimeStamp;
            this.ReceiveTimeStamp = receiveTimeStamp;
        }
    }

我已编辑了SyncMessageToServer方法

public boolean SyncMessageToServer(ChatMessage chatMessage){
    boolean sentStatus = false;
    String msgText=chatMessage.getMessageText();
    String fileUrl=chatMessage.getMediaURL();
    int isPending = chatMessage.getIsPending();
    Toast.makeText(getApplicationContext(), " = ---loginUserInfoId = " + chatMessage.getSenderUserInfoId() + " receiverUserInfoId = " + receiverUserInfoId, Toast.LENGTH_LONG).show();
    chatText.setText("");

    JSONObject json = null;
    String str = "";

    HttpResponse response;
    HttpClient myClient = new DefaultHttpClient();
    HttpPost myConnection = new HttpPost("http://192.168.1.2/AndroidApp/SendMessage?messageText="+msgText+"&senderUserInfoId="+loginUserInfoId+"&recieverUserInfoId="+receiverUserInfoId+"&url="+fileUrl+"&isGroupMsg="+false);

    try {
        response = myClient.execute(myConnection);
        str = EntityUtils.toString(response.getEntity(), "UTF-8");

    } catch (ClientProtocolException e) {
        Toast.makeText(getApplicationContext(),"message sending Failed!", Toast.LENGTH_LONG).show();
        //e.printStackTrace();
    } catch (IOException e) {
        //e.printStackTrace();
    }

    try{
        JSONArray jArray = new JSONArray(str);
        //  GetMessage(receiverUserInfoId);
    } catch ( JSONException e) {
        //e.printStackTrace();
    }
    return true;
}
public boolean SyncMessageToServer(ChatMessage chatMessage){
        boolean sentStatus = false;
        String msgText=chatMessage.getMessageText();
        String fileUrl=chatMessage.getMediaURL();
        int isPending = chatMessage.getIsPending();
        Toast.makeText(getApplicationContext(), " = ---loginUserInfoId = " + chatMessage.getSenderUserInfoId() + " receiverUserInfoId = " + receiverUserInfoId, Toast.LENGTH_LONG).show();
        chatText.setText("");

        JSONObject json = null;
        String str = "";

        HttpClient myClient = new DefaultHttpClient();

        HttpPost myConnection = new HttpPost("http://192.168.1.2/AndroidApp/SendMessage");

        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("messageText", msgText));
            nameValuePairs.add(new BasicNameValuePair("senderUserInfoId", loginUserInfoId));
            nameValuePairs.add(new BasicNameValuePair("recieverUserInfoId", receiverUserInfoId));
            nameValuePairs.add(new BasicNameValuePair("url", fileUrl));
            nameValuePairs.add(new BasicNameValuePair("isGroupMsg", "false"));
            myConnection.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = myClient.execute(myConnection);
            str =EntityUtils.toString(response.getEntity()).toString();

        } catch (ClientProtocolException e) {
            Toast.makeText(getApplicationContext(),"message sending Failed!", Toast.LENGTH_LONG).show();
            //e.printStackTrace();
        } catch (IOException e) {
            //e.printStackTrace();
        }

        try{
            JSONArray jArray = new JSONArray(str);
            //  GetMessage(receiverUserInfoId);
        } catch ( JSONException e) {
            //e.printStackTrace();
        }
        return true;
    }
public boolean SyncMessageToServer(ChatMessage ChatMessage){
布尔状态=假;
字符串msgText=chatMessage.getMessageText();
字符串fileUrl=chatMessage.getMediaURL();
int isPending=chatMessage.getIsPending();
Toast.makeText(getApplicationContext(),“=--LoginUserInfo=“+chatMessage.GetSenderUserInfo()+”receiverUserInfoId=“+receiverUserInfoId,Toast.LENGTH_LONG).show();
chatText.setText(“”);
JSONObject json=null;
字符串str=“”;
HttpClient myClient=新的默认HttpClient();
HttpPost myConnection=新的HttpPost(“http://192.168.1.2/AndroidApp/SendMessage");
试一试{
List nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“messageText”,msgText));
添加(新的BasicNameValuePair(“SenderUserInfo”,LoginUserInfo));
添加(新的BasicNameValuePair(“ReceiveUserInfoId”,ReceiveUserInfoId));
添加(新的BasicNameValuePair(“url”,fileUrl));
添加(新的BasicNameValuePair(“isGroupMsg”、“false”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=myClient.execute(myConnection);
str=EntityUtils.toString(response.getEntity()).toString();
}捕获(客户端协议例外e){
Toast.makeText(getApplicationContext(),“消息发送失败!”,Toast.LENGTH\u LONG.show();
//e、 printStackTrace();
}捕获(IOE异常){
//e、 printStackTrace();
}
试一试{
JSONArray jArray=新JSONArray(str);
//GetMessage(receiverUserInfoId);
}捕获(JSONException e){
//e、 printStackTrace();
}
返回true;
}

01-29 10:59:45.567 31689-31689/technovite.com.dbsyncest E/AndroidRuntime﹕ 致命异常:主进程:technovite.com.dbsyncetest,PID:31689 java.lang.IllegalArgumentException:索引57处的查询中的非法字符:are u&senderUserInfo=6456d7be-204e-e411-be9e-eca86bf55486&ReceiveUserInfoId=ac6e6f4f-7ce0-e311-b021-eca86bf5549a&url=&isGroupMsg=false位于java.net.urite(URI.java:727)显示SyncMessageToServer()方法代码,这次编辑问题not in commentError明确表示字符串中有一些不需要的字符,因此您需要使用
URLCoder
或只使用
urstring.replace(“,“%20”)对字符串进行编码
还添加getter setter方法以获取您想要获取的所有值,并替换str=EntityUtils.toString(response.getEntity(),“UTF-8”);使用str=EntityUtils.toString(response.getEntity()).toString();这不管用。请提供我如何对我的URL进行编码,您在这里使用的是get方法或post方法。?HttpResponse response;HttpClient myClient=新的默认HttpClient();String myURL=“;HttpPost myConnection=new HttpPost(myURL);尝试{response=myClient.execute(myConnection);str=EntityUtils.toString(response.getEntity()).toString();}