将 javascript 代码转换为 android 代码 - 如何在 POST 请求中添加引荐来源网址?
Converting javascript code to android code - how to add referrer in POST request?
我的网站上有这个 java 脚本代码,它会在有人订阅我的时事通讯时执行。它基本上只是 post 请求。这是一段代码。
function es_submit_request(url, parameters, es_widget_form) {
http_req = false;
http_req.onreadystatechange = function() {eemail_submitresult(es_widget_form)}; // Passing the form to the submit request
http_req.open('POST', url, true);
http_req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_req.send(parameters);
}
是否可以从我的 android 应用程序代码中调用此 post 方法来为某人订阅我的时事通讯?
我试过这段代码 here 但它不起作用。
当我调试 js 代码时,变量值显示为
parameters = "es_email=fgnfg@dgd.com&es_name=&es_group=×tamp=&action=0.9901232281510463"
url = "http://thetechguru.in/?es=subscribe"
如果有人可以帮助我编写代码,我将不胜感激。我宁愿不为此使用任何库,因为我不想为这么小的事情增加开销。 (我的应用程序中只有一个网络调用)
这是我正在尝试的一段代码,但它不起作用。
String urlString = "http://www.thetechguru.in/?es=subscribe&es_email=fsdsf@dgd.com&es_name=&es_group=×tamp=&action=0.9901232281510463";
String resultToDisplay = "";
InputStream in = null;
try {
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
in = new BufferedInputStream(urlConnection.getInputStream());
} catch (Exception e) {
System.out.println(e.getMessage());
return e.getMessage();
}
try {
resultToDisplay = in.toString();//IOUtils.toString(in, "UTF-8");
//to [convert][1] byte stream to a string
Log.v("Response",resultToDisplay);
} catch (Exception e) {
e.printStackTrace();
}
代码执行,但没有任何反应,电子邮件 ID 未添加到列表中
您的应用程序清单文件是什么样的?如果您的应用程序没有访问互联网的权限,它就不会。尝试将 <uses-permission android:name="android.permission.INTERNET" />
添加到您的 AndroidMainfest.xml
文件(在 <manifest>
标签内,但在 <application>
标签之前。
您的日志中是否显示了任何内容(log.v 仅在设置为详细时才会显示)?如果是这样,请分享它显示的内容。 Log guide
否则,es_email=fsdsf@dgd.com 电子邮件是否已在列表中?确保您正在更新按钮
上网址字符串的 es_email 参数
我终于解决了这个问题。即使我使用正确的代码发送 POST 请求,我也无法订阅电子邮件 ID。我检查了请求的 HTTP 响应,发现它返回错误 "unexpected-error"。我检查了服务器代码,在 php 代码中出现了检查 HTTP_REFERER 的情况。所以做了一些研究,并在我的 java 请求中添加了 REFERER,瞧,成功了!
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//Set to POST
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setDoInput(true);
//Added referer
connection.addRequestProperty("REFERER", "http://thetechguru.in");
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
connection.setReadTimeout(10000);
Writer writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(query);
writer.flush();
writer.close();
希望对大家有所帮助
我的网站上有这个 java 脚本代码,它会在有人订阅我的时事通讯时执行。它基本上只是 post 请求。这是一段代码。
function es_submit_request(url, parameters, es_widget_form) {
http_req = false;
http_req.onreadystatechange = function() {eemail_submitresult(es_widget_form)}; // Passing the form to the submit request
http_req.open('POST', url, true);
http_req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_req.send(parameters);
}
是否可以从我的 android 应用程序代码中调用此 post 方法来为某人订阅我的时事通讯?
我试过这段代码 here 但它不起作用。
当我调试 js 代码时,变量值显示为
parameters = "es_email=fgnfg@dgd.com&es_name=&es_group=×tamp=&action=0.9901232281510463"
url = "http://thetechguru.in/?es=subscribe"
如果有人可以帮助我编写代码,我将不胜感激。我宁愿不为此使用任何库,因为我不想为这么小的事情增加开销。 (我的应用程序中只有一个网络调用)
这是我正在尝试的一段代码,但它不起作用。
String urlString = "http://www.thetechguru.in/?es=subscribe&es_email=fsdsf@dgd.com&es_name=&es_group=×tamp=&action=0.9901232281510463";
String resultToDisplay = "";
InputStream in = null;
try {
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
in = new BufferedInputStream(urlConnection.getInputStream());
} catch (Exception e) {
System.out.println(e.getMessage());
return e.getMessage();
}
try {
resultToDisplay = in.toString();//IOUtils.toString(in, "UTF-8");
//to [convert][1] byte stream to a string
Log.v("Response",resultToDisplay);
} catch (Exception e) {
e.printStackTrace();
}
代码执行,但没有任何反应,电子邮件 ID 未添加到列表中
您的应用程序清单文件是什么样的?如果您的应用程序没有访问互联网的权限,它就不会。尝试将 <uses-permission android:name="android.permission.INTERNET" />
添加到您的 AndroidMainfest.xml
文件(在 <manifest>
标签内,但在 <application>
标签之前。
您的日志中是否显示了任何内容(log.v 仅在设置为详细时才会显示)?如果是这样,请分享它显示的内容。 Log guide
否则,es_email=fsdsf@dgd.com 电子邮件是否已在列表中?确保您正在更新按钮
上网址字符串的 es_email 参数我终于解决了这个问题。即使我使用正确的代码发送 POST 请求,我也无法订阅电子邮件 ID。我检查了请求的 HTTP 响应,发现它返回错误 "unexpected-error"。我检查了服务器代码,在 php 代码中出现了检查 HTTP_REFERER 的情况。所以做了一些研究,并在我的 java 请求中添加了 REFERER,瞧,成功了!
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//Set to POST
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setDoInput(true);
//Added referer
connection.addRequestProperty("REFERER", "http://thetechguru.in");
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
connection.setReadTimeout(10000);
Writer writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(query);
writer.flush();
writer.close();
希望对大家有所帮助