Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
Java XML分析错误:Twilio的格式不正确_Java_Xml_Twilio - Fatal编程技术网

Java XML分析错误:Twilio的格式不正确

Java XML分析错误:Twilio的格式不正确,java,xml,twilio,Java,Xml,Twilio,就我个人而言,我不明白为什么我会在Twilio响应对象的动作URL上出现XML解析错误。我附加了输出页面错误和用于生成XML的java代码 输出错误 XML Parsing Error: not well-formed Location: https://test.ignore.com/ApplicationName/go.acx?action=ivr.outbound.twilio.Introduction&rkey=1 Line Number 4, Column 101:<Re

就我个人而言,我不明白为什么我会在Twilio响应对象的动作URL上出现XML解析错误。我附加了输出页面错误和用于生成XML的java代码

输出错误

XML Parsing Error: not well-formed
Location: https://test.ignore.com/ApplicationName/go.acx?action=ivr.outbound.twilio.Introduction&rkey=1
Line Number 4, Column 101:<Response><Gather action="instanceurl.com/AccessWorx/go.acx?action=ivr.outbound.twilio.Selection&rkey=1" timeout="5" numDigits="1" finishOnKey="#" method="GET"><Say>This is an automated message from __________ to notify you of a service issue.Here is a sample message. Press 1 to accept this serviceissue, Press 2 to forward this call to the next contact in you company, press 3 if you are not the correct person to contact, press 4 to repeat these options.</Say></Gather></Response>
----------------------------------------------------------------------------------------------------^

在进行了一些浏览器调试之后,Firefox告诉我需要对&进行转义。幸运的是,Java在Java.net(URLEncoder)中提供了一些实用程序函数,用于处理转义空间等

下面是生成操作url的方法的新实现:

public String buildActionUrl(String instanceUrl, String action, String rkey) {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("action", action));
    params.add(new BasicNameValuePair("rkey", rkey));

    String paramString = URLEncodedUtils.format(params, "UTF-8");
    try {
        return URLEncoder.encode(instanceUrl + paramString, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        logger.error("", e);
        return ".";     // return the action to be defaulted to the originating page
    }
}
公共字符串buildActionUrl(字符串实例URL、字符串操作、字符串rkey){
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“操作”,操作));
参数添加(新的BasicNameValuePair(“rkey”,rkey));
String paramString=URLEncodedUtils.format(params,“UTF-8”);
试一试{
返回URLEncoder.encode(instanceUrl+paramString,“UTF-8”);
}捕获(不支持的编码异常e){
记录器错误(“,e);
return.“;//将要默认的操作返回到原始页面
}
}
可以将此方法推广到接受参数的任何输入映射:

public String buildActionUrl(String baseUrl, Map<String, String> parameters, String encoding) throws UnsupportedEncodingException {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    for (String param : parameters.keySet() ) {
        params.add(new BasicNameValuePair(param, parameters.get(param)));
    }
    return URLEncoder.encode(baseUrl + URLEncodedUtils.format(params, encoding), encoding);
}
publicstringbuildActionURL(stringbaseURL、映射参数、字符串编码)引发UnsupportedEncodingException{
List params=new ArrayList();
for(字符串参数:parameters.keySet()){
添加(新的BasicNameValuePair(param,parameters.get(param));
}
返回URLEncoder.encode(baseUrl+URLEncodedUtils.format(params,encoding),encoding);
}

查看此项。尝试转义
&
字符。谢谢你。。。原来你是对的!一些关于发帖的问题似乎会立即引导你找到自己的答案。如果阅读链接中的答案,你也可以从那里的海报上看到类似的经历。:)
public String buildActionUrl(String baseUrl, Map<String, String> parameters, String encoding) throws UnsupportedEncodingException {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    for (String param : parameters.keySet() ) {
        params.add(new BasicNameValuePair(param, parameters.get(param)));
    }
    return URLEncoder.encode(baseUrl + URLEncodedUtils.format(params, encoding), encoding);
}