想要实现的是将JSP中的数据(xml)传递给服务器端,再解析从服务器端获得的xml,具体如下:post调用地址:http://XXXXX/
post的参数名称:fromdata将登陆界面的用户名和密码保存格式为:
<?xml version="1.0" encoding="UTF-8" ?>
<auth>
<email>username</email>
<password>password</password>
</auth>然后服务器端返回的xml为:
<?xml version="1.0" encoding="UTF-8"?>
<result>
<retCode>0</retCode>
<retInfo>认证成功</retInfo>
</result>主要是解析retCode的值...
ajax传数据不是很懂啊,所以希望能有比较完整的代码,各位大神帮帮忙,时间很紧...
xmlajaxjson服务器jsp
post的参数名称:fromdata将登陆界面的用户名和密码保存格式为:
<?xml version="1.0" encoding="UTF-8" ?>
<auth>
<email>username</email>
<password>password</password>
</auth>然后服务器端返回的xml为:
<?xml version="1.0" encoding="UTF-8"?>
<result>
<retCode>0</retCode>
<retInfo>认证成功</retInfo>
</result>主要是解析retCode的值...
ajax传数据不是很懂啊,所以希望能有比较完整的代码,各位大神帮帮忙,时间很紧...
xmlajaxjson服务器jsp
type: "POST",
data: {fromdata:xmlData},
url: "http://XXXXX/",
dataType: "json", //返回json,也可改为html
async: false,
success: function(json) {
//处理返回结果
},
error: function(data) {
//处理错误
}
});
<script>
function check(f) {
var xml = '<?xml version="1.0" encoding="UTF-8" ?><auth><email>' + f.email.value + '</email><password>' + f.password.value + '</password></auth>';
$.ajax({ url: '动态页地址',
type: 'POST',
data: 'data=' + encodeURIComponent(xml),
dataType: 'xml',
success: function (xmlDoc) {
var retCode = $(xmlDoc).find('retCode').text();
alert(retCode);
},
error: function (xhr) { alert('发生错误!\n' + xhr.responseText); }
}); return false;
}
</script>
</head>
<body>
<form onsubmit="return check(this)">
<INPUT name=email class="inp" id="text" size=15 maxLength=40>
<INPUT name=password type=text1 class="inp" id="text1">
<input type="submit" value="submit" />
</form>
</body>
</html>
这样就行了
var xml = '<?xml version="1.0" encoding="UTF-8" ?><auth><email>' + f.email.value + '</email><password>' + f.password.value + '</password></auth>';
$.ajax({ url: '动态页地址',
type: 'POST',
data: 'fromdata=' + encodeURIComponent(xml),
dataType: 'html',
success: function (xmlDoc) {
alert(xmlDoc)//看输出什么,如果没有输出就是你的动态页有问题,没有返回内容
var retCode = $(xmlDoc).find('retCode').text();
alert(retCode);
},
error: function (xhr) { alert('发生错误!\n' + xhr.responseText); }
});
return false;
}
跨域请求不行
跨域了应该怎么弄?
* 获取指定省份的城市列表
* 返回Map<城市名,城市气象id>
* @throws IOException
*/
public Map<String, String> getCityMap(String provincename) throws IOException {
InputStream cityXml = null;
Map<String,String> citymap=null;
try {
cityXml = dao.getCityXml(provincename);
citymap=new HashMap<String,String>();
SAXReader sr = new SAXReader();// 获取读取xml的对象。
Document document;
document = sr.read(cityXml);
Element root = document.getRootElement();
List<?> elementlist = root.elements("city"); for (Object obj : elementlist) {
Element row = (Element) obj;
String cityname = row.attribute("cityname").getText();
String cityid =row.attribute("url").getText();
citymap.put(cityname,cityid);
}
return citymap;
} catch (DocumentException e) {
Log.e(this.toString(), "document Error");
}
return null;
}
jsp是不是就是一个servlet?
servlet中是不是可以运行java代码?
这个java代码是不是可以把返回的流解析成xml对象?
jsp是不是就是一个servlet?
servlet中是不是可以运行java代码?
这个java代码是不是可以把返回的流解析成xml对象?
我现在不是要解析xml,而是要把数据以xml格式提交给一个url,因为是跨域的,所以需要弄个jsp作为代理,但是不知道应该怎样操作...
jsp是不是就是一个servlet?
servlet中是不是可以运行java代码?
这个java代码是不是可以把返回的流解析成xml对象?
我现在不是要解析xml,而是要把数据以xml格式提交给一个url,因为是跨域的,所以需要弄个jsp作为代理,但是不知道应该怎样操作...
你的意思是想把xml文件拼接成json串发送?
还是转化成流的方式发送?
jsp是不是就是一个servlet?
servlet中是不是可以运行java代码?
这个java代码是不是可以把返回的流解析成xml对象?
我现在不是要解析xml,而是要把数据以xml格式提交给一个url,因为是跨域的,所以需要弄个jsp作为代理,但是不知道应该怎样操作...
你的意思是想把xml文件拼接成json串发送?
还是转化成流的方式发送?
我要传的数据类型就是xml,而且必须要是post方法,但是json是get的,因为验证那边的页面要求的是post方式的xml格式数据...
请求码流样例:
要求:
post调用地址:http://software.nju.edu.cn:8000/api/auth/user/
post的参数名称:fromdata 格式为:
<?xml version="1.0" encoding="UTF-8" ?>
<auth>
<email>[email protected]</email>
<password>CY9rzUYh03PK3k6DJie09g==</password>
</auth>
这种要求转化成流可行?
jsp是不是就是一个servlet?
servlet中是不是可以运行java代码?
这个java代码是不是可以把返回的流解析成xml对象?
我现在不是要解析xml,而是要把数据以xml格式提交给一个url,因为是跨域的,所以需要弄个jsp作为代理,但是不知道应该怎样操作...
你的意思是想把xml文件拼接成json串发送?
还是转化成流的方式发送?
我要传的数据类型就是xml,而且必须要是post方法,但是json是get的,因为验证那边的页面要求的是post方式的xml格式数据...
请求码流样例:
要求:
post调用地址:http://software.nju.edu.cn:8000/api/auth/user/
post的参数名称:fromdata 格式为:
<?xml version="1.0" encoding="UTF-8" ?>
<auth>
<email>[email protected]</email>
<password>CY9rzUYh03PK3k6DJie09g==</password>
</auth>
这种要求转化成流可行?
我在做中央气象台的接口的时候,从url对象中获取返回流,就是xml格式的。
我们写的字符串其实也是以流的形式来发送的,不是么?
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...
要么你想怎么发送信息?
所有的信息都是包装到流里面的,接受页面肯定也会默认的去解析这个流,读出其中的信息。
另外,login.jsp编译之后就等于servlet,这不叫接受。
你的要求说白了,就是给服务端发送一段xml格式的文字,对么?
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...
要么你想怎么发送信息?
所有的信息都是包装到流里面的,接受页面肯定也会默认的去解析这个流,读出其中的信息。
另外,login.jsp编译之后就等于servlet,这不叫接受。
你的要求说白了,就是给服务端发送一段xml格式的文字,对么?
是的,应该怎么处理?希望能有点代码参考下
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...
要么你想怎么发送信息?
所有的信息都是包装到流里面的,接受页面肯定也会默认的去解析这个流,读出其中的信息。
另外,login.jsp编译之后就等于servlet,这不叫接受。
你的要求说白了,就是给服务端发送一段xml格式的文字,对么?
是的,应该怎么处理?希望能有点代码参考下
我感觉应该是类似下面这样的吧?public void sendXmlTest() throws Exception {
// 通过类装载器装载XML资源
InputStream inputStream = this.getClass().getClassLoader()
.getResourceAsStream("test.xml");
byte[] xml = input2byte(inputStream); String path = "http://172.22.35.112:8080/videonews/GetXmlInfo";
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(5000);
conn.setDoOutput(true); // 设置HTTP请求的头字段
conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8"); // 内容类型
conn.setRequestProperty("Content-Length", String.valueOf(xml.length)); // 实体内容的长度 conn.getOutputStream().write(xml); if (conn.getResponseCode() == 200) {
System.out.println("发送成功!");
} else {
System.out.println("发送失败!");
}
} public static final byte[] input2byte(InputStream inStream)
throws IOException {
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int rc = 0;
while ((rc = inStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in2b = swapStream.toByteArray();
return in2b;
}
我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?
我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?
难道不可以直接把String转换为byte么...
还有一个问题是post有一个参数,这个应该怎么传?
我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?
难道不可以直接把String转换为byte么...
还有一个问题是post有一个参数,这个应该怎么传?
当然可以了。我只是不习惯改动方法的输入参数而已。。这个方法的输入参数应该是inputstream。
可以的话建议使用httpClient
这样就可以创建多个NameValuePair对象保存值了。。http://www.oschina.net/code/snippet_1434_1032
这个你看下
我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?
难道不可以直接把String转换为byte么...
还有一个问题是post有一个参数,这个应该怎么传?
当然可以了。我只是不习惯改动方法的输入参数而已。。这个方法的输入参数应该是inputstream。
可以的话建议使用httpClient
这样就可以创建多个NameValuePair对象保存值了。。http://www.oschina.net/code/snippet_1434_1032
这个你看下
想问下那个网页的代码中:PostMethod post = new PostMethod("/simcard.php");
simcard.php是指哪个页面?
的哪个位置?是前面的"simcard"改为"fromdata",还是"1330227"改为"fromdata="+xml字符串?
我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?
难道不可以直接把String转换为byte么...
还有一个问题是post有一个参数,这个应该怎么传?
当然可以了。我只是不习惯改动方法的输入参数而已。。这个方法的输入参数应该是inputstream。
可以的话建议使用httpClient
这样就可以创建多个NameValuePair对象保存值了。。http://www.oschina.net/code/snippet_1434_1032
这个你看下
想问下那个网页的代码中:PostMethod post = new PostMethod("/simcard.php");
simcard.php是指哪个页面?
它前面加了域名了和协议以及端口号了
client.getHostConfiguration().setHost("www.imobile.com.cn", 80, "http");
这方法等于添加地址。拼接起来的话应该是
http://www.imobile.com.cn/simcard.php
的哪个位置?是前面的"simcard"改为"fromdata",还是"1330227"改为"fromdata="+xml字符串?
我晕了。那边是xml形式接受的,xml外面还得包含一个参数?
还是就是传2个字符串的值过去,一个值是参数,一个值是xml字符串?
的哪个位置?是前面的"simcard"改为"fromdata",还是"1330227"改为"fromdata="+xml字符串?
我晕了。那边是xml形式接受的,xml外面还得包含一个参数?
还是就是传2个字符串的值过去,一个值是参数,一个值是xml字符串?
1.client.getHostConfiguration().setHost(url)貌似也可以?如果里面是url,那么PostMethod post = new PostMethod("/simcard.php");应该怎么写,难道括号里为空?
2.应该是有一个参数叫fromdata,这个参数的值为一个xml字符串,然后验证页面那边读取参数fromdata的值...
的哪个位置?是前面的"simcard"改为"fromdata",还是"1330227"改为"fromdata="+xml字符串?
我晕了。那边是xml形式接受的,xml外面还得包含一个参数?
还是就是传2个字符串的值过去,一个值是参数,一个值是xml字符串?
1.client.getHostConfiguration().setHost(url)貌似也可以?如果里面是url,那么PostMethod post = new PostMethod("/simcard.php");应该怎么写,难道括号里为空?
2.应该是有一个参数叫fromdata,这个参数的值为一个xml字符串,然后验证页面那边读取参数fromdata的值...
我哭了。你那就是字符串嘛。至于怎么解析xml那是那边的事了
就是传两个字符串过去呗?
你说的我也有点晕了。
我说的两个字符串是一个参数,一个xml字符串的意思。。
莫非单传一个xml文件过去就可以了?
NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);
通过NameValuePair 这样也是添加多参的。
NameValuePair fromdata=new NameValuePair("fromdata",data);
pm.setRequestBody(new NameValuePair[]{fromdata});
pm.setRequestHeader("Content-type","text/xml;charset=utf-8");
HttpClient httpClient=new HttpClient();
int result=httpClient.executeMethod(pm);
String msg=new String(pm.getResponseBody());
System.out.println(result);
System.out.println(msg);
pm.releaseConnection();
跑起来后,我输入用户名和密码,但是结果那边提示没有输入任何参数,也就是说那边没有接收到xml字符串数据...ps:result值为200