如何使用 jSessionId post 将多个 edittext 数据添加到网页
how to post multiple edittext data to a webpage with jSessionId
我是 Android 开发新手。
基本上我需要将我的 android 应用程序的 3 个 editTexts 的数据提交到网页并显示返回的响应。
该网页使用带有 jSessionId 的会话。
我不知道如何 post 请求网页、获取 cookie、存储它并在通过将 jSessionId 附加到 url 发送上述数据时使用它.
我过去两天一直在搜索这个。但什么也做不了。不知道从哪里开始以及如何开始。
我正在寻找详细的答案,因为我也尝试过 Whosebug 的答案。仍然没有运气
到目前为止我已经设法检索到 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 数据来检索信息?
三个方面你要做
1) 首先将您的 sessionId 从网站(Web 客户端)存储在服务器端的数据库(后端)中。
我不知道你的网站使用什么环境,但如果你知道,你可以通过 Ajax 请求或其他方式来完成。
2) 创建将从数据库访问存储数据的 Web 服务。
3)最后你会通过android客户端获取到post数据。
请参考以下代码:
/**
* Making service call
* @url - url to make request
* @method - http request method
* @params - http request params
* */
public String makeServiceCall(String url, int method,
List<NameValuePair> params) {
try {
// http client
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpEntity httpEntity = null;
HttpResponse httpResponse = null;
// Checking http request method type
if (method == POST) {
HttpPost httpPost = new HttpPost(url);
// adding post params
if (params != null) {
httpPost.setEntity(new UrlEncodedFormEntity(params));
}
httpResponse = httpClient.execute(httpPost);
} else if (method == GET) {
// appending params to url
if (params != null) {
String paramString = URLEncodedUtils
.format(params, "utf-8");
url += "?" + paramString;
}
HttpGet httpGet = new HttpGet(url);
httpResponse = httpClient.execute(httpGet);
}
httpEntity = httpResponse.getEntity();
response = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
此方法将return 来自服务器的字符串响应。
您可以解析回复并在您的应用中使用。
已使用 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]);
我是 Android 开发新手。
基本上我需要将我的 android 应用程序的 3 个 editTexts 的数据提交到网页并显示返回的响应。 该网页使用带有 jSessionId 的会话。
我不知道如何 post 请求网页、获取 cookie、存储它并在通过将 jSessionId 附加到 url 发送上述数据时使用它. 我过去两天一直在搜索这个。但什么也做不了。不知道从哪里开始以及如何开始。
我正在寻找详细的答案,因为我也尝试过 Whosebug 的答案。仍然没有运气
到目前为止我已经设法检索到 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 数据来检索信息?
三个方面你要做
1) 首先将您的 sessionId 从网站(Web 客户端)存储在服务器端的数据库(后端)中。 我不知道你的网站使用什么环境,但如果你知道,你可以通过 Ajax 请求或其他方式来完成。
2) 创建将从数据库访问存储数据的 Web 服务。
3)最后你会通过android客户端获取到post数据。 请参考以下代码:
/**
* Making service call
* @url - url to make request
* @method - http request method
* @params - http request params
* */
public String makeServiceCall(String url, int method,
List<NameValuePair> params) {
try {
// http client
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpEntity httpEntity = null;
HttpResponse httpResponse = null;
// Checking http request method type
if (method == POST) {
HttpPost httpPost = new HttpPost(url);
// adding post params
if (params != null) {
httpPost.setEntity(new UrlEncodedFormEntity(params));
}
httpResponse = httpClient.execute(httpPost);
} else if (method == GET) {
// appending params to url
if (params != null) {
String paramString = URLEncodedUtils
.format(params, "utf-8");
url += "?" + paramString;
}
HttpGet httpGet = new HttpGet(url);
httpResponse = httpClient.execute(httpGet);
}
httpEntity = httpResponse.getEntity();
response = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
此方法将return 来自服务器的字符串响应。 您可以解析回复并在您的应用中使用。
已使用 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]);