Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法读取服务器响应JavaException:javax.xml.xpath.XPathExpressionException:null_Java - Fatal编程技术网

无法读取服务器响应JavaException:javax.xml.xpath.XPathExpressionException:null

无法读取服务器响应JavaException:javax.xml.xpath.XPathExpressionException:null,java,Java,我正在尝试执行以下代码: function post(url, options) { if(options.query) { url += "?"; var delimiter = ""; for(var propName in (options.query||{})) { url += (delemiter + (propName + "=" + escape(options.query[propName]))); delimiter =

我正在尝试执行以下代码:

function post(url, options) {
if(options.query) {
    url += "?";
    var delimiter = "";
    for(var propName in (options.query||{})) {
        url += (delemiter + (propName + "=" + escape(options.query[propName])));
        delimiter = "&";
    }
}
document.write("Fetching " + url);
var code;

var body = options.body;
if(body == null) {
    throw {message:"Body is required"};
}

try {

    // Open Connection
    connection = new java.net.URL(url).openConnection();

    // Set timeout
    var timeout = options.timeout != null ? options.timeout : 10000;
    connection.setReadTimeout(timeout);
    connection.setConnectTimeout(timeout);

    // Method == POST
    connection.setRequestMethod("POST");

    // Set Content Type
    var contentType = "text/xml;charset=utf-8";
    connection.setRequestProperty("Content-Type", contentType);
    connection.setRequestProperty("SOAPAction", "login");
    connection.setRequestProperty("User-Agent", "webastra");

    // Set Content Length
    connection.setRequestProperty("Content-Length", body.length);

    // Silly Java Stuff
    connection.setUseCaches (false);
    connection.setDoInput(true);
    connection.setDoOutput(true); 

    //Send Post Data
    bodyWriter = new java.io.DataOutputStream(connection.getOutputStream());
    bodyWriter.writeBytes(body);
    bodyWriter.flush ();
    bodyWriter.close (); 

    code = connection.getResponseCode();

}
catch(e) {
    throw {message:("Socket Exception or Server Timeout: " + e), code:0};
}
if(code < 200 || code > 299) {
    throw {message:("Received non-2XX response: " + code), code:code};
}
 var is = null;
try {

    importPackage(java.io, java.net, javax.xml.xpath, org.xml.sax);
    is = connection.getInputStream();
    var str = new String(org.apache.commons.io.IOUtils.toString(is));

    var paths = "//serverUrl";
    var ips = new InputSource(is);
    var xPath = XPathFactory.newInstance().newXPath();
    ret = xPath.evaluate(paths, ips);

    document.write(" succ:" + ret);
    return str;
}
catch(e) {
    document.write("Failed to read server response" + e);
}
finally {
    try {if(is != null)is.close();} catch (err){}
}

}

 post("https://abc.com/services/Soap/c/28.0", {body : "<?xml     version=\"1.0\" encoding=\"utf-8\"?> <soap:Envelope    xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"   xmlns:tns=\"urn:enterprise.soap.sforce.com\"> <soap:Header> <tns:LoginScopeHeader>   <tns:organizationId/> </tns:LoginScopeHeader> </soap:Header> <soap:Body> <tns:login>   <tns:username>abc@3clogic.com</tns:username>   <tns:password>Thursday12gtz</tns:password> </tns:login> </soap:Body>   </soap:Envelope>"});
函数帖子(url、选项){
if(options.query){
url+=“?”;
var分隔符=”;
for(在(options.query | |{})中使用var propName){
url+=(delemiter+(propName+“=”+escape(options.query[propName]));
分隔符=“&”;
}
}
document.write(“抓取”+url);
var代码;
var body=options.body;
if(body==null){
抛出{message:“Body是必需的”};
}
试一试{
//开放连接
connection=newjava.net.URL(URL.openConnection();
//设置超时
var timeout=options.timeout!=null?options.timeout:10000;
connection.setReadTimeout(超时);
connection.setConnectTimeout(超时);
//方法==POST
connection.setRequestMethod(“POST”);
//设置内容类型
var contentType=“text/xml;charset=utf-8”;
setRequestProperty(“内容类型”,contentType);
setRequestProperty(“SOAPAction”、“login”);
setRequestProperty(“用户代理”、“webastra”);
//设置内容长度
connection.setRequestProperty(“内容长度”,body.Length);
//愚蠢的Java东西
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(真);
//发送Post数据
bodyWriter=new java.io.DataOutputStream(connection.getOutputStream());
bodyWriter.writeBytes(body);
bodyWriter.flush();
bodyWriter.close();
代码=连接。getResponseCode();
}
捕获(e){
抛出{消息:(“套接字异常或服务器超时:”+e),代码:0};
}
如果(代码<200 | |代码>299){
抛出{message:(“收到的非2XX响应:“+code”),code:code};
}
var=null;
试一试{
importPackage(java.io、java.net、javax.xml.xpath、org.xml.sax);
is=connection.getInputStream();
var str=新字符串(org.apache.commons.io.IOUtils.toString(is));
var path=“//服务器URL”;
var ips=新输入源(is);
var xPath=XPathFactory.newInstance().newXPath();
ret=xPath.evaluate(路径,IP);
文件。写入(“成功:”+ret);
返回str;
}
捕获(e){
document.write(“读取服务器响应失败”+e);
}
最后{
尝试{if(is!=null)is.close();}catch(err){
}
}
职位(”https://abc.com/services/Soap/c/28.0“,{正文:”abc@3clogic.com周四12GTZ“});
post部分是成功的。但是,当我试图在变量ret中检索xml标记“serverUrl”的值时,出现以下错误:

无法读取服务器响应JavaException:javax.xml.xpath.XPathExpressionException:null

我从post检索到的xml是:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
              xmlns="urn:enterprise.soap.sforce.com"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
    <loginResponse>
        <result>
            <metadataServerUrl>
               https://na3.salesforce.com/services/Soap/m/28.0/00D50000000IdrE
            </metadataServerUrl>
            <passwordExpired>false</passwordExpired>
            <sandbox>false</sandbox>
            <serverUrl>
                https://na3.salesforce.com/services/Soap/c/28.0/00D50000000IdrE
            </serverUrl>
            <sessionId>
                    00D50000000IdrE!AREAQK4VYXRaHoL_uRvOi.QXXw3ahAt2Cge254wygiW7cr_f6DVa2pDC6g57w5IE
                fidAu3ZRsJFBN5Bwb6DVhF18zKFiVVyT
            </sessionId>
            <userId>00550000001Dd4uAAC</userId>
            <userInfo>
                <accessibilityMode>false</accessibilityMode>
                <currencySymbol>$</currencySymbol>
                <orgAttachmentFileSizeLimit>5242880
                </orgAttachmentFileSizeLimit>
                <orgDefaultCurrencyIsoCode>USD</orgDefaultCurrencyIsoCode>
                <orgDisallowHtmlAttachments>false
                </orgDisallowHtmlAttachments>
                <orgHasPersonAccounts>false</orgHasPersonAccounts>
                <organizationId>00D50000000IdrEEAS</organizationId>
                <organizationMultiCurrency>false</organizationMultiCurrency>
                <organizationName>3CLogic</organizationName>
                <profileId>00e500000017al5AAA</profileId>
                <roleId xsi:nil="true"/>
                <sessionSecondsValid>7200</sessionSecondsValid>
                <userDefaultCurrencyIsoCode xsi:nil="true"/>
                <userEmail>ramana@3clogic.com</userEmail>
                <userFullName>Ramana</userFullName>
                <userId>00550Dd4uAAC</userId>
                <userLanguage>en_US</userLanguage>
                <userLocale>en_US</userLocale>
                <userName>raman@gmail.com.com</userName>
                <userTimeZone>America/New_York</userTimeZone>
                <userType>Standard</userType>
                <userUiSkin>Theme3</userUiSkin>
            </userInfo>
        </result>
    </loginResponse>
</soapenv:Body>
</soapenv:Envelope>

https://na3.salesforce.com/services/Soap/m/28.0/00D50000000IdrE
假的
假的
https://na3.salesforce.com/services/Soap/c/28.0/00D50000000IdrE
00D50000000印尼盾!区域QK4Vyxrahol_uRvOi.QXXW3AHAT2CE254WYGIW7CR_f6DVa2pDC6g57w5IE
fidAu3ZRsJFBN5Bwb6DVhF18zKFiVVyT
00550000001Dd4uAAC
假的
$
5242880
美元
假的
假的
00D50000000IdrEEAS
假的
3CLogic
00E5000017AL5AAA
7200
ramana@3clogic.com
拉马纳
00550Dd4uAAC
恩努斯
恩努斯
raman@gmail.com.com
美国/纽约
标准
主题3

当您尝试解析时,
输入流
已为“空”(即读取):

is=connection.getInputStream();

var str=新字符串(org.apache.commons.io.IOUtils.toString(is));//
var
来自哪里?那不是Java,对吗?