如何使用jSessionId将多个edittext数据发布到网页

时间:2016-01-19 06:39:19

标签: android httpurlconnection jsessionid

我是Android开发的新手。

基本上我需要将我的Android应用程序的3个editTexts中的数据提交到网页并显示返回的响应。 该网页使用与jSessionId的会话。

我不知道如何通过将jSessionId附加到网址,将请求发布到网页,获取cookie,存储并使用它,同时发送上述数据。  我过去2天一直在搜索这个。但无法完成任何工作。不知道从哪里开始以及如何开始。

我正在寻找一个详细的答案,因为我也尝试过stackoverflow的答案。仍然没有运气

到目前为止,我设法找回了jsessionid。

 public boolean send() {
        String givenDob = dobET.getText().toString();
        String givensurname = surnameEt.getText().toString();
        String givenCaptcha = captchaET.getText().toString();
        String url = "https://mysite/getinfo.html";
        try {
            URLConnection connection = new URL(url).openConnection();
            InputStream response = connection.getInputStream();
            List<String> cookies = connection.getHeaderFields().get("Set-Cookie");
            Log.d("Link Response", String.valueOf(response));
            Log.d("Cookie", String.valueOf(cookies));
            String value = cookies.get(0);
            if (value.contains("JSESSIONID")) {
                int index = value.indexOf("JSESSIONID=");

                int endIndex = value.indexOf(";", index);
                String sessionID = value.substring(
                        index + "JSESSIONID=".length(), endIndex);
                Log.d("id " ,sessionID);

            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        return false;
    }

现在我该如何使用此sessionid并发送edittext数据来检索信息?

2 个答案:

答案 0 :(得分:0)

你必须以三种方式做事

1)首先将您的sessionId存储在服务器端的数据库(Backend)中,从Web站点(Web客户端)。  我不知道您使用什么环境的网站,但如果您知道,可以通过Ajax请求或其他方式来完成。

2)创建将从数据库访问该存储数据的Web服务。

3)最后,您将通过Android客户端获取和发布数据。  请参考以下代码:

var t = document.querySelector("meta[name='validation']").getAttribute('content');
$.ajax({
    url:'yoururl',
    data: yourData + '&token=' + t,
    type: 'get',
    success: function(response){
       // do whatever
    },
    error: function(e){
        console.log(e);
    }
});

此方法将从服务器返回字符串响应。 您可以解析回复并在您的应用中使用。

答案 1 :(得分:0)

使用Cookimanager为整个连接设置默认Cookie。我的问题解决了。只需使用URI.builder()

附加查询参数即可
URL strUrl = new URL("https://myurl.com/services/getinfo.html?dateOfBirth="
                    + params[0] +
                    "&surName=" + params[1] +
                    "&firstName&middleName" +
                    "&captchaCode=" + params[2]);