如何用ajax,json实现发送xml到服务器端,再解析从服务器端返回的xml?

时间:2022-12-02 08:16:41
想要实现的是将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传数据不是很懂啊,所以希望能有比较完整的代码,各位大神帮帮忙,时间很紧...


47 个解决方案

#1


var xmlData = 'xxxxxxxx';

$.ajax({
    type:     "POST",
    data:     {fromdata:xmlData},
    url:      "http://XXXXX/",
    dataType: "json", //返回json,也可改为html
    async:    false,
    success:  function(json) {
     //处理返回结果
    },
    error:  function(data) {
     //处理错误
    }
});

#2


js 处理XML功能还不完善。推荐使用json  

#3


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<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>
 

#4


post参数fromdata用在哪呢?

#5


那post的参数fromdata用在哪呢?

引用 3 楼 showbo 的回复:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<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>
 

那post的参数fromdata用在哪呢?

#6


引用 1 楼 booou 的回复:
var xmlData = 'xxxxxxxx';

$.ajax({
    type:     "POST",
    data:     {fromdata:xmlData},
    url:      "http://XXXXX/",
    dataType: "json", //返回json,也可改为html
    async:    false,
    success:  function(json) {
     //处理返回结果
    },
    error:  function(data) {
     //处理错误
    }
});

那怎样对json解析呢?我主要是获得retCode和retInfo的值

#7


引用 5 楼 qweaz2012 的回复:
那post的参数fromdata用在哪呢?

Quote: 引用 3 楼 showbo 的回复:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<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>
 

那post的参数fromdata用在哪呢?


晕,不都给你示例了。。要自己组合,那个别人只是说明性的

#8


引用 7 楼 showbo 的回复:
Quote: 引用 5 楼 qweaz2012 的回复:

那post的参数fromdata用在哪呢?

Quote: 引用 3 楼 showbo 的回复:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<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>
 

那post的参数fromdata用在哪呢?


晕,不都给你示例了。。要自己组合,那个别人只是说明性的


我是把data中的data=换成参数fromdata的,应该是这样的吧,但是最后结果是显示发生错误,并且没有xhr.responseText信息...

#9


data: ' fromdata=' + encodeURIComponent(xml),


这样就行了

#10


引用 9 楼 showbo 的回复:
data: ' fromdata=' + encodeURIComponent(xml),


这样就行了

我是这样改的但是最后结果是“发生错误”,而且没有xhr.responseText信息返回,不知道哪里有问题...

#11


动态页设置了contexttype为text/xml了吗

不行将dataType改为html试试

#12


引用 11 楼 showbo 的回复:
动态页设置了contexttype为text/xml了吗

不行将dataType改为html试试

改为html的话,会有提示框,但是提示框里没有内容...

#13


    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: '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;
    }

#14


引用 13 楼 showbo 的回复:
    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: '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;
    }


什么也没有,
但是我如果直接打开动态页网址的话,有相应的信息。因为用的是学校的邮箱验证,如果直接打开动态页网址,会显示输入不能为空。

#15


url到底是什么?跨域了没有。。
跨域请求不行

#16


引用 15 楼 showbo 的回复:
url到底是什么?跨域了没有。。
跨域请求不行

url:http://software.nju.edu.cn:8000/api/auth/user/
跨域了应该怎么弄?

#17


跨域了就要再自己的站点做个代理页面,用服务器端的xhr发送数据请求跨域页面获取返回的输出后输出,ajax请求代理页面,不能直接请求跨域的那个页面,安全问题不允许直接请求跨域的页面

#18


引用 17 楼 showbo 的回复:
跨域了就要再自己的站点做个代理页面,用服务器端的xhr发送数据请求跨域页面获取返回的输出后输出,ajax请求代理页面,不能直接请求跨域的那个页面,安全问题不允许直接请求跨域的页面

服务器端是指?

#19


引用 17 楼 showbo 的回复:
跨域了就要再自己的站点做个代理页面,用服务器端的xhr发送数据请求跨域页面获取返回的输出后输出,ajax请求代理页面,不能直接请求跨域的那个页面,安全问题不允许直接请求跨域的页面

代理页面能不能给个实例啊,这个实在是不懂...

#20


jsp不会了,帮你移动到java版块去

#21


jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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;
}

#22


引用 20 楼 showbo 的回复:
jsp不会了,帮你移动到java版块去

那先谢谢版主了

#23


引用 21 楼 AA5279AA 的回复:
jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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;
}

没懂你意思,和我的问题有关?

#24


引用 23 楼 qweaz2012 的回复:
Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

#25


引用 24 楼 AA5279AA 的回复:
Quote: 引用 23 楼 qweaz2012 的回复:

Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

我现在不是要解析xml,而是要把数据以xml格式提交给一个url,因为是跨域的,所以需要弄个jsp作为代理,但是不知道应该怎样操作...

#26


引用 25 楼 qweaz2012 的回复:
Quote: 引用 24 楼 AA5279AA 的回复:

Quote: 引用 23 楼 qweaz2012 的回复:

Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

我现在不是要解析xml,而是要把数据以xml格式提交给一个url,因为是跨域的,所以需要弄个jsp作为代理,但是不知道应该怎样操作...

你的意思是想把xml文件拼接成json串发送?
还是转化成流的方式发送?

#27


引用 26 楼 AA5279AA 的回复:
Quote: 引用 25 楼 qweaz2012 的回复:

Quote: 引用 24 楼 AA5279AA 的回复:

Quote: 引用 23 楼 qweaz2012 的回复:

Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

我现在不是要解析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>xx@xx.xx</email>
        <password>CY9rzUYh03PK3k6DJie09g==</password>
 
        </auth>
这种要求转化成流可行?

#28


引用 27 楼 qweaz2012 的回复:
Quote: 引用 26 楼 AA5279AA 的回复:

Quote: 引用 25 楼 qweaz2012 的回复:

Quote: 引用 24 楼 AA5279AA 的回复:

Quote: 引用 23 楼 qweaz2012 的回复:

Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

我现在不是要解析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>xx@xx.xx</email>
        <password>CY9rzUYh03PK3k6DJie09g==</password>
 
        </auth>
这种要求转化成流可行?

我在做*气象台的接口的时候,从url对象中获取返回流,就是xml格式的。
我们写的字符串其实也是以流的形式来发送的,不是么?

#29


引用 28 楼 AA5279AA 的回复:

那你的意思是写个Servlet接受我写的login.jsp的数据,在装成xml格式,以流的形式发送给验证的那个页面?
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...

#30


引用 29 楼 qweaz2012 的回复:
Quote: 引用 28 楼 AA5279AA 的回复:

那你的意思是写个Servlet接受我写的login.jsp的数据,在装成xml格式,以流的形式发送给验证的那个页面?
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...

要么你想怎么发送信息?
所有的信息都是包装到流里面的,接受页面肯定也会默认的去解析这个流,读出其中的信息。
另外,login.jsp编译之后就等于servlet,这不叫接受。
你的要求说白了,就是给服务端发送一段xml格式的文字,对么?

#31


引用 30 楼 AA5279AA 的回复:
Quote: 引用 29 楼 qweaz2012 的回复:

Quote: 引用 28 楼 AA5279AA 的回复:

那你的意思是写个Servlet接受我写的login.jsp的数据,在装成xml格式,以流的形式发送给验证的那个页面?
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...

要么你想怎么发送信息?
所有的信息都是包装到流里面的,接受页面肯定也会默认的去解析这个流,读出其中的信息。
另外,login.jsp编译之后就等于servlet,这不叫接受。
你的要求说白了,就是给服务端发送一段xml格式的文字,对么?

是的,应该怎么处理?希望能有点代码参考下

#32


引用 31 楼 qweaz2012 的回复:
Quote: 引用 30 楼 AA5279AA 的回复:

Quote: 引用 29 楼 qweaz2012 的回复:

Quote: 引用 28 楼 AA5279AA 的回复:

那你的意思是写个Servlet接受我写的login.jsp的数据,在装成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;
}

#33


引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是xml类型的,这样行不行?

#34


引用 33 楼 qweaz2012 的回复:
Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是xml类型的,这样行不行?

我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?

#35


引用 34 楼 AA5279AA 的回复:
Quote: 引用 33 楼 qweaz2012 的回复:

Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是xml类型的,这样行不行?

我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?

难道不可以直接把String转换为byte么...
还有一个问题是post有一个参数,这个应该怎么传?

#36


引用 35 楼 qweaz2012 的回复:
Quote: 引用 34 楼 AA5279AA 的回复:

Quote: 引用 33 楼 qweaz2012 的回复:

Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是xml类型的,这样行不行?

我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?

难道不可以直接把String转换为byte么...
还有一个问题是post有一个参数,这个应该怎么传?

当然可以了。我只是不习惯改动方法的输入参数而已。。这个方法的输入参数应该是inputstream。
可以的话建议使用httpClient
这样就可以创建多个NameValuePair对象保存值了。。

http://www.oschina.net/code/snippet_1434_1032
这个你看下

#37


引用 36 楼 AA5279AA 的回复:
Quote: 引用 35 楼 qweaz2012 的回复:

Quote: 引用 34 楼 AA5279AA 的回复:

Quote: 引用 33 楼 qweaz2012 的回复:

Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是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是指哪个页面?

#38


引用 36 楼 AA5279AA 的回复:

还有就是我的post参数是应该加在 NameValuePair simcard = new NameValuePair("simcard","1330227");
的哪个位置?是前面的"simcard"改为"fromdata",还是"1330227"改为"fromdata="+xml字符串?

#39


引用 37 楼 qweaz2012 的回复:
Quote: 引用 36 楼 AA5279AA 的回复:

Quote: 引用 35 楼 qweaz2012 的回复:

Quote: 引用 34 楼 AA5279AA 的回复:

Quote: 引用 33 楼 qweaz2012 的回复:

Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是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

#40


引用 38 楼 qweaz2012 的回复:
Quote: 引用 36 楼 AA5279AA 的回复:

还有就是我的post参数是应该加在 NameValuePair simcard = new NameValuePair("simcard","1330227");
的哪个位置?是前面的"simcard"改为"fromdata",还是"1330227"改为"fromdata="+xml字符串?

我晕了。那边是xml形式接受的,xml外面还得包含一个参数?
还是就是传2个字符串的值过去,一个值是参数,一个值是xml字符串?

#41


引用 40 楼 AA5279AA 的回复:
Quote: 引用 38 楼 qweaz2012 的回复:

Quote: 引用 36 楼 AA5279AA 的回复:

还有就是我的post参数是应该加在 NameValuePair simcard = new NameValuePair("simcard","1330227");
的哪个位置?是前面的"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的值...

#42


引用 41 楼 qweaz2012 的回复:
Quote: 引用 40 楼 AA5279AA 的回复:

Quote: 引用 38 楼 qweaz2012 的回复:

Quote: 引用 36 楼 AA5279AA 的回复:

还有就是我的post参数是应该加在 NameValuePair simcard = new NameValuePair("simcard","1330227");
的哪个位置?是前面的"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那是那边的事了。。。
就是传两个字符串过去呗?

#43


引用 42 楼 AA5279AA 的回复:
我哭了。你那就是字符串嘛。至于怎么解析xml那是那边的事了。。。
就是传两个字符串过去呗?

不懂你说的传两个字符串过去是什么意思,为什么会有两个字符串..我看了一些网上httpClient的例子,都是直接传xml字符串的,所以不是很清楚post的参数fromdata怎么传,难道是这样:NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);?还是哪样?

#44


引用 43 楼 qweaz2012 的回复:
Quote: 引用 42 楼 AA5279AA 的回复:


我哭了。你那就是字符串嘛。至于怎么解析xml那是那边的事了。。。
就是传两个字符串过去呗?

不懂你说的传两个字符串过去是什么意思,为什么会有两个字符串..我看了一些网上httpClient的例子,都是直接传xml字符串的,所以不是很清楚post的参数fromdata怎么传,难道是这样:NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);?还是哪样?

你说的我也有点晕了。
我说的两个字符串是一个参数,一个xml字符串的意思。。
莫非单传一个xml文件过去就可以了?
NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);
通过NameValuePair 这样也是添加多参的。

#45


引用 44 楼 AA5279AA 的回复:

不是传xml文件,应该就是传xml格式的字符串,只不过给这个字符串加了一个对应的参数fromdata,,但是我这样做了以后验证那边的页面收不到我的xml字符串,是NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);不对么?我贴下代码吧,实在是搞不懂..

PostMethod pm=new PostMethod(url);
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

#46


引用 44 楼 AA5279AA 的回复:

或者是接受到了数据但是因为某种原因,没解析出来,那边肯定不会出错,那就还是这边传数据有问题?

#47


就这样沉了么,求各路大神帮忙啊...

#1


var xmlData = 'xxxxxxxx';

$.ajax({
    type:     "POST",
    data:     {fromdata:xmlData},
    url:      "http://XXXXX/",
    dataType: "json", //返回json,也可改为html
    async:    false,
    success:  function(json) {
     //处理返回结果
    },
    error:  function(data) {
     //处理错误
    }
});

#2


js 处理XML功能还不完善。推荐使用json  

#3


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<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>
 

#4


post参数fromdata用在哪呢?

#5


那post的参数fromdata用在哪呢?

引用 3 楼 showbo 的回复:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<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>
 

那post的参数fromdata用在哪呢?

#6


引用 1 楼 booou 的回复:
var xmlData = 'xxxxxxxx';

$.ajax({
    type:     "POST",
    data:     {fromdata:xmlData},
    url:      "http://XXXXX/",
    dataType: "json", //返回json,也可改为html
    async:    false,
    success:  function(json) {
     //处理返回结果
    },
    error:  function(data) {
     //处理错误
    }
});

那怎样对json解析呢?我主要是获得retCode和retInfo的值

#7


引用 5 楼 qweaz2012 的回复:
那post的参数fromdata用在哪呢?

Quote: 引用 3 楼 showbo 的回复:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<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>
 

那post的参数fromdata用在哪呢?


晕,不都给你示例了。。要自己组合,那个别人只是说明性的

#8


引用 7 楼 showbo 的回复:
Quote: 引用 5 楼 qweaz2012 的回复:

那post的参数fromdata用在哪呢?

Quote: 引用 3 楼 showbo 的回复:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<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>
 

那post的参数fromdata用在哪呢?


晕,不都给你示例了。。要自己组合,那个别人只是说明性的


我是把data中的data=换成参数fromdata的,应该是这样的吧,但是最后结果是显示发生错误,并且没有xhr.responseText信息...

#9


data: ' fromdata=' + encodeURIComponent(xml),


这样就行了

#10


引用 9 楼 showbo 的回复:
data: ' fromdata=' + encodeURIComponent(xml),


这样就行了

我是这样改的但是最后结果是“发生错误”,而且没有xhr.responseText信息返回,不知道哪里有问题...

#11


动态页设置了contexttype为text/xml了吗

不行将dataType改为html试试

#12


引用 11 楼 showbo 的回复:
动态页设置了contexttype为text/xml了吗

不行将dataType改为html试试

改为html的话,会有提示框,但是提示框里没有内容...

#13


    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: '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;
    }

#14


引用 13 楼 showbo 的回复:
    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: '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;
    }


什么也没有,
但是我如果直接打开动态页网址的话,有相应的信息。因为用的是学校的邮箱验证,如果直接打开动态页网址,会显示输入不能为空。

#15


url到底是什么?跨域了没有。。
跨域请求不行

#16


引用 15 楼 showbo 的回复:
url到底是什么?跨域了没有。。
跨域请求不行

url:http://software.nju.edu.cn:8000/api/auth/user/
跨域了应该怎么弄?

#17


跨域了就要再自己的站点做个代理页面,用服务器端的xhr发送数据请求跨域页面获取返回的输出后输出,ajax请求代理页面,不能直接请求跨域的那个页面,安全问题不允许直接请求跨域的页面

#18


引用 17 楼 showbo 的回复:
跨域了就要再自己的站点做个代理页面,用服务器端的xhr发送数据请求跨域页面获取返回的输出后输出,ajax请求代理页面,不能直接请求跨域的那个页面,安全问题不允许直接请求跨域的页面

服务器端是指?

#19


引用 17 楼 showbo 的回复:
跨域了就要再自己的站点做个代理页面,用服务器端的xhr发送数据请求跨域页面获取返回的输出后输出,ajax请求代理页面,不能直接请求跨域的那个页面,安全问题不允许直接请求跨域的页面

代理页面能不能给个实例啊,这个实在是不懂...

#20


jsp不会了,帮你移动到java版块去

#21


jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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;
}

#22


引用 20 楼 showbo 的回复:
jsp不会了,帮你移动到java版块去

那先谢谢版主了

#23


引用 21 楼 AA5279AA 的回复:
jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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;
}

没懂你意思,和我的问题有关?

#24


引用 23 楼 qweaz2012 的回复:
Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

#25


引用 24 楼 AA5279AA 的回复:
Quote: 引用 23 楼 qweaz2012 的回复:

Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

我现在不是要解析xml,而是要把数据以xml格式提交给一个url,因为是跨域的,所以需要弄个jsp作为代理,但是不知道应该怎样操作...

#26


引用 25 楼 qweaz2012 的回复:
Quote: 引用 24 楼 AA5279AA 的回复:

Quote: 引用 23 楼 qweaz2012 的回复:

Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

我现在不是要解析xml,而是要把数据以xml格式提交给一个url,因为是跨域的,所以需要弄个jsp作为代理,但是不知道应该怎样操作...

你的意思是想把xml文件拼接成json串发送?
还是转化成流的方式发送?

#27


引用 26 楼 AA5279AA 的回复:
Quote: 引用 25 楼 qweaz2012 的回复:

Quote: 引用 24 楼 AA5279AA 的回复:

Quote: 引用 23 楼 qweaz2012 的回复:

Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

我现在不是要解析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>xx@xx.xx</email>
        <password>CY9rzUYh03PK3k6DJie09g==</password>
 
        </auth>
这种要求转化成流可行?

#28


引用 27 楼 qweaz2012 的回复:
Quote: 引用 26 楼 AA5279AA 的回复:

Quote: 引用 25 楼 qweaz2012 的回复:

Quote: 引用 24 楼 AA5279AA 的回复:

Quote: 引用 23 楼 qweaz2012 的回复:

Quote: 引用 21 楼 AA5279AA 的回复:

jsp中读is流(包含xml信息)

/**
 * 获取指定省份的城市列表
 * 返回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对象?

我现在不是要解析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>xx@xx.xx</email>
        <password>CY9rzUYh03PK3k6DJie09g==</password>
 
        </auth>
这种要求转化成流可行?

我在做*气象台的接口的时候,从url对象中获取返回流,就是xml格式的。
我们写的字符串其实也是以流的形式来发送的,不是么?

#29


引用 28 楼 AA5279AA 的回复:

那你的意思是写个Servlet接受我写的login.jsp的数据,在装成xml格式,以流的形式发送给验证的那个页面?
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...

#30


引用 29 楼 qweaz2012 的回复:
Quote: 引用 28 楼 AA5279AA 的回复:

那你的意思是写个Servlet接受我写的login.jsp的数据,在装成xml格式,以流的形式发送给验证的那个页面?
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...

要么你想怎么发送信息?
所有的信息都是包装到流里面的,接受页面肯定也会默认的去解析这个流,读出其中的信息。
另外,login.jsp编译之后就等于servlet,这不叫接受。
你的要求说白了,就是给服务端发送一段xml格式的文字,对么?

#31


引用 30 楼 AA5279AA 的回复:
Quote: 引用 29 楼 qweaz2012 的回复:

Quote: 引用 28 楼 AA5279AA 的回复:

那你的意思是写个Servlet接受我写的login.jsp的数据,在装成xml格式,以流的形式发送给验证的那个页面?
但是servlet中怎样标志这是一段xml文件呢?不能标志的话,验证页面是检测不了的,要求就是这样的...

要么你想怎么发送信息?
所有的信息都是包装到流里面的,接受页面肯定也会默认的去解析这个流,读出其中的信息。
另外,login.jsp编译之后就等于servlet,这不叫接受。
你的要求说白了,就是给服务端发送一段xml格式的文字,对么?

是的,应该怎么处理?希望能有点代码参考下

#32


引用 31 楼 qweaz2012 的回复:
Quote: 引用 30 楼 AA5279AA 的回复:

Quote: 引用 29 楼 qweaz2012 的回复:

Quote: 引用 28 楼 AA5279AA 的回复:

那你的意思是写个Servlet接受我写的login.jsp的数据,在装成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;
}

#33


引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是xml类型的,这样行不行?

#34


引用 33 楼 qweaz2012 的回复:
Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是xml类型的,这样行不行?

我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?

#35


引用 34 楼 AA5279AA 的回复:
Quote: 引用 33 楼 qweaz2012 的回复:

Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是xml类型的,这样行不行?

我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?

难道不可以直接把String转换为byte么...
还有一个问题是post有一个参数,这个应该怎么传?

#36


引用 35 楼 qweaz2012 的回复:
Quote: 引用 34 楼 AA5279AA 的回复:

Quote: 引用 33 楼 qweaz2012 的回复:

Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是xml类型的,这样行不行?

我这是安卓的,所以通过类加载器去找。。
你的xml文件在哪里呢?
这个问题,如果只是字符串的话,把字符串转化为为inputstream流你应该会吧?

难道不可以直接把String转换为byte么...
还有一个问题是post有一个参数,这个应该怎么传?

当然可以了。我只是不习惯改动方法的输入参数而已。。这个方法的输入参数应该是inputstream。
可以的话建议使用httpClient
这样就可以创建多个NameValuePair对象保存值了。。

http://www.oschina.net/code/snippet_1434_1032
这个你看下

#37


引用 36 楼 AA5279AA 的回复:
Quote: 引用 35 楼 qweaz2012 的回复:

Quote: 引用 34 楼 AA5279AA 的回复:

Quote: 引用 33 楼 qweaz2012 的回复:

Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是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是指哪个页面?

#38


引用 36 楼 AA5279AA 的回复:

还有就是我的post参数是应该加在 NameValuePair simcard = new NameValuePair("simcard","1330227");
的哪个位置?是前面的"simcard"改为"fromdata",还是"1330227"改为"fromdata="+xml字符串?

#39


引用 37 楼 qweaz2012 的回复:
Quote: 引用 36 楼 AA5279AA 的回复:

Quote: 引用 35 楼 qweaz2012 的回复:

Quote: 引用 34 楼 AA5279AA 的回复:

Quote: 引用 33 楼 qweaz2012 的回复:

Quote: 引用 32 楼 AA5279AA 的回复:

类装载器装载xml资源是通过路径读取xml文件吧,但是我这应该是不用读取xml文件的,应该是xml格式的String,不过注明是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

#40


引用 38 楼 qweaz2012 的回复:
Quote: 引用 36 楼 AA5279AA 的回复:

还有就是我的post参数是应该加在 NameValuePair simcard = new NameValuePair("simcard","1330227");
的哪个位置?是前面的"simcard"改为"fromdata",还是"1330227"改为"fromdata="+xml字符串?

我晕了。那边是xml形式接受的,xml外面还得包含一个参数?
还是就是传2个字符串的值过去,一个值是参数,一个值是xml字符串?

#41


引用 40 楼 AA5279AA 的回复:
Quote: 引用 38 楼 qweaz2012 的回复:

Quote: 引用 36 楼 AA5279AA 的回复:

还有就是我的post参数是应该加在 NameValuePair simcard = new NameValuePair("simcard","1330227");
的哪个位置?是前面的"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的值...

#42


引用 41 楼 qweaz2012 的回复:
Quote: 引用 40 楼 AA5279AA 的回复:

Quote: 引用 38 楼 qweaz2012 的回复:

Quote: 引用 36 楼 AA5279AA 的回复:

还有就是我的post参数是应该加在 NameValuePair simcard = new NameValuePair("simcard","1330227");
的哪个位置?是前面的"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那是那边的事了。。。
就是传两个字符串过去呗?

#43


引用 42 楼 AA5279AA 的回复:
我哭了。你那就是字符串嘛。至于怎么解析xml那是那边的事了。。。
就是传两个字符串过去呗?

不懂你说的传两个字符串过去是什么意思,为什么会有两个字符串..我看了一些网上httpClient的例子,都是直接传xml字符串的,所以不是很清楚post的参数fromdata怎么传,难道是这样:NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);?还是哪样?

#44


引用 43 楼 qweaz2012 的回复:
Quote: 引用 42 楼 AA5279AA 的回复:


我哭了。你那就是字符串嘛。至于怎么解析xml那是那边的事了。。。
就是传两个字符串过去呗?

不懂你说的传两个字符串过去是什么意思,为什么会有两个字符串..我看了一些网上httpClient的例子,都是直接传xml字符串的,所以不是很清楚post的参数fromdata怎么传,难道是这样:NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);?还是哪样?

你说的我也有点晕了。
我说的两个字符串是一个参数,一个xml字符串的意思。。
莫非单传一个xml文件过去就可以了?
NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);
通过NameValuePair 这样也是添加多参的。

#45


引用 44 楼 AA5279AA 的回复:

不是传xml文件,应该就是传xml格式的字符串,只不过给这个字符串加了一个对应的参数fromdata,,但是我这样做了以后验证那边的页面收不到我的xml字符串,是NameValuePair fromdata=new NameValuePair("fromdata",xml字符串);不对么?我贴下代码吧,实在是搞不懂..

PostMethod pm=new PostMethod(url);
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

#46


引用 44 楼 AA5279AA 的回复:

或者是接受到了数据但是因为某种原因,没解析出来,那边肯定不会出错,那就还是这边传数据有问题?

#47


就这样沉了么,求各路大神帮忙啊...