Java Android:Eclipse/Netbeans冲突HTML
我在Netbeans(或EclipseW/oAndroid)中使用以下代码基本上登录到一个页面并提取其HTML源代码。这非常有效,它可以打印html源代码。但是,当我在Android中使用相同的代码,并将生成的html源代码设置为textView或尝试将其打印为Toast时,它返回一个完全空的字符串 进口Java Android:Eclipse/Netbeans冲突HTML,java,android,html-parsing,http-post,Java,Android,Html Parsing,Http Post,我在Netbeans(或EclipseW/oAndroid)中使用以下代码基本上登录到一个页面并提取其HTML源代码。这非常有效,它可以打印html源代码。但是,当我在Android中使用相同的代码,并将生成的html源代码设置为textView或尝试将其打印为Toast时,它返回一个完全空的字符串 进口 public class LogTest { public String doSubmit(String url, Map<String, String> data) thr
public class LogTest {
public String doSubmit(String url, Map<String, String> data) throws Exception {
URL siteUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
Set keys = data.keySet();
Iterator keyIter = keys.iterator();
String content = "";
for (int i = 0; keyIter.hasNext(); i++) {
Object key = keyIter.next();
if (i != 0) {
content += "&";
}
content += key + "=" + URLEncoder.encode(data.get(key), "UTF-8");
}
out.writeBytes(content);
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
String html = "";
while ((line = in.readLine()) != null) {
html += line + "\n";
}
in.close();
return html;
}
public static void main(String[] args) {
String html = "no html";
try {
LogTest test = new LogTest();
String url = "http://www.cupertino.schoolloop.com/portal/login?login_name=siddhantdanger&password=11616sid"
+ "&event_override=login";
Map<String, String> data = new HashMap<String, String>();
data.put("login_name", "aLogin");
data.put("password", "aPass");
data.put("event_override", "login");
data.put("etarget", "login_form");
html = test.doSubmit(url, data);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(html);
}
}
公共类日志测试{
公共字符串doSubmit(字符串url、映射数据)引发异常{
URL siteUrl=新URL(URL);
HttpURLConnection conn=(HttpURLConnection)siteUrl.openConnection();
conn.setRequestMethod(“POST”);
连接设置输出(真);
conn.setDoInput(真);
DataOutputStream out=新的DataOutputStream(conn.getOutputStream());
Set keys=data.keySet();
迭代器keyIter=keys.Iterator();
字符串内容=”;
for(int i=0;keyIter.hasNext();i++){
objectkey=keyIter.next();
如果(i!=0){
内容+=“&”;
}
content+=key+“=”+urlcoder.encode(data.get(key),“UTF-8”);
}
out.writeBytes(内容);
out.flush();
out.close();
BufferedReader in=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
字符串行=”;
字符串html=“”;
而((line=in.readLine())!=null){
html+=行+“\n”;
}
in.close();
返回html;
}
公共静态void main(字符串[]args){
String html=“无html”;
试一试{
LogTest test=新的LogTest();
字符串url=”http://www.cupertino.schoolloop.com/portal/login?login_name=siddhantdanger&password=11616sid"
+“&event_override=login”;
映射数据=新的HashMap();
数据输入(“登录名”、“登录名”);
数据输入(“密码”、“aPass”);
data.put(“事件覆盖”、“登录”);
data.put(“etarget”、“login_form”);
html=test.doSubmit(url,数据);
}捕获(例外e){
e、 printStackTrace();
}
System.out.println(html);
}
}
我不知道为什么Android与java编译不同。至于我在Android中如何使用它(如果这会影响它的话),我只是有一个带有布局的主活动,然后我从这个主活动中调用doSubmit方法来获取html(然后将其设置为TextView或print in Toast)。我的应用程序包src文件夹只有两个类:LogTest.java(没有main方法)和MainActivity.java。上面的main方法已被移动到MainActivity.java的OnCreate()活动。您在NetBeans中设置了代理设置吗?据我所知,没有。这都是默认设置。我相信上述代码适用于任何标准java编译器,而不仅仅是Netbeans。我刚才用了Netbeans作为例子,意思是一些不基于Android的东西。你有连接互联网的权限吗?它将是:在AndroidManifest.xmlYes中,我拥有包括在内的权限。