可能重复:
解析ksoap2响应
所以我设法在Android中使用KSoap2调用web服务,但我找不到解析响应的方法...
So here's what I receive from the webservice
anyType{
WORCCategoriaSubcategoriaRecord=anyType{ssENCategoria=anyType{Id=1; Nome=Problema na rua; }; ssENSubcategoria=anyType{Id=1; Nome=Falta de acesso; Imagem=anyType{}; CategoriaId=1; }; };
WORCCategoriaSubcategoriaRecord=anyType{ssENCategoria=anyType{Id=1; Nome=Problema na rua; }; ssENSubcategoria=anyType{Id=2; Nome=Falta de Passadeira; Imagem=anyType{}; CategoriaId=1; }; };
}
Run Code Online (Sandbox Code Playgroud)
这是我用来调用web服务的代码......
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//request.addProperty("Celsius", "32");
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//soapEnvelope.dotNet = true;
soapEnvelope.setOutputSoapObject(request);
soapEnvelope.dotNet = true;
AndroidHttpTransport aht = new AndroidHttpTransport(URL);
try{
aht.call(SOAP_ACTION, soapEnvelope);
//SoapPrimitive resultString = (SoapPrimitive)soapEnvelope.getResponse();
SoapObject resultsRequestSOAP = (SoapObject) soapEnvelope.bodyIn;
int elementCount = …Run Code Online (Sandbox Code Playgroud) 我使用ExtJS为我的程序构建客户端.有一种情况我想向服务器发送Ajax请求,并获取响应文件(二进制文件,而不是纯文本文件,即XLS或PDF).如何通过ExtJS获取返回的文件(我的意思是该文件可以下载并存储到客户端)?我不能var result = Ext.decode(response.responseText)用来接收结果,因为响应包含二进制数据并且无法解码.
Ajax调用非常简单:
Ext.Ajax.request({
url : 'myController/exportFile',
method : 'GET',
success : function(response, opts) {
// What should I do to get the file?
},
failure : function(response, opts) {
alert('Export file failed!')
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的服务器操作返回文件:
public void sendFile(HttpServletResponse response, String filePath) {
def file = new File(filePath);
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename=${file.getName()}");
response.outputStream << file.newInputStream();
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我想得到网址的扩展文件.
例如,获取扩展名http://www.iranfairco.com/download-file/02912bb889cb24.如果扩展名此文件是gif.
编辑:
例如这个网址"http://www.online-convert.com/result/d8b423c3cbc05000cc52ce7015873e72"
请帮帮我如何获得这个网址的扩展?
在此链接中,它说:处理用户生成报告HTML的请求,并将HTML直接写入响应对象.现在在我的代码中,我有:
PrintWriter out = response.getWriter();
crystalReportViewer.processHttpRequest(request, response, context,null);
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,processHttpRequest遗嘱本身会做类似的事情response.getWriter().print(.....).
那么创建2个实例的代码是PrintWriter什么?
我正在使用一个Web服务,我在其中发送带有附件的请求,我们从服务器收到包含各种信息的响应.我已经记录了在另一个问题中一起获取请求的一些问题.添加SOAP请求的附件但这个位已经解决,现在响应上出现了另一个问题.
我们收到响应确定但是抛出一个错误说明:
响应不是格式良好的XML.
InnerException是:
WSE1608:没有XOP部件位于指定content-id的流中:<rootpart*36875c60-630c-4e23-9e74-f9a9c7547fc7@example.jaxws.sun.com>
返回的xml如下所示:
--uuid:36875c60-630c-4e23-9e74-f9a9c7547fc7
Content-Type: application/xop+xml;charset=utf-8;type="text/xml";
Content-ID: <rootpart*36875c60-630c-4e23-9e74-f9a9c7547fc7@example.jaxws.sun.com>
content-transfer-encoding: binary
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<payloadManifest xmlns="http://(namespace)">
<manifest contentID="content0" element="ProcessAttachment" namespaceURI="http://(namespace)" version="2.01"/>
</payloadManifest>
</soapenv:Header>
<soapenv:Body>
<tran:ProcessMessageResponse xmlns="http://(namespace)" xmlns:ns2="http://(ns2Namespace)" xmlns:ns3="http://(ns3Namespace)" xmlns:tran="http://(tranNamespace)">
<tran:payload>
<tran:content id="content0">
<s:ShowServiceProcessingAdvisory xmlns:s="http://(sNamespace)">
<s:ApplicationArea>
<s:Sender>
<s:Component>Global Warranty Management</s:Component>
<s:Task>ShowAttachments</s:Task>
<s:CreatorNameCode>Creator</s:CreatorNameCode>
<s:SenderNameCode>GM</s:SenderNameCode>
</s:Sender>
<s:CreationDateTime>2012-01-10T12:58:27Z</s:CreationDateTime>
<s:Destination>
<s:DestinationNameCode>XX</s:DestinationNameCode>
<s:DealerNumber>234567</s:DealerNumber>
<s:DealerCountry>US</s:DealerCountry>
</s:Destination>
</s:ApplicationArea>
<s:DataArea>
<s:Show/>
<s:ServiceProcessingAdvisory>
<s:Header>
<s:SecondaryDealerNumber>253909</s:SecondaryDealerNumber>
<s:Disposition>
<s:RepairOrder>
<s:WarrantyClaim xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:WarrantyClaimExtended">
<s:OEMClaimNumber>00112233445566778899</s:OEMClaimNumber>
<gwm:Attachment xmlns:gwm="http://(gwmNamespace)">
<gwm:AttachmentId>5678987</gwm:AttachmentId>
<gwm:Filename>14.jpg</gwm:Filename>
</gwm:Attachment>
</s:WarrantyClaim>
</s:RepairOrder>
</s:Disposition>
</s:Header>
</s:ServiceProcessingAdvisory> …Run Code Online (Sandbox Code Playgroud) 我有一个.NET方法,为我的数据库添加一个新成员.它通过AJAX请求完成此操作.我有这个工作正常,但我在返回正确的响应消息时遇到问题,因此我可以向用户打印正确的消息.
我的方法目前看起来像这样:
public static string MemberRegister(int process)
{
//here we find form values posted to the current page
HttpRequest post = HttpContext.Current.Request;
//get values from ajax URL
var name = post["name"];
var email = post["email"];
var username = post["username"];
var password = post["password"];
//check if email exists
if (Member.GetMemberFromEmail(email) == null)
{
MemberType userMemberType = new MemberType(1111); //id of membertype 'demo'
Member newMember = Member.MakeNew(name, userMemberType, new umbraco.BusinessLogic.User(0));
newMember.AddGroup(MemberGroup.GetByName("Active").Id);
newMember.Email = email;
newMember.Password = password;
newMember.LoginName = username;
newMember.Save();
return …Run Code Online (Sandbox Code Playgroud) 几天我一直在学习自定义协议,有一件事我不明白.我知道如何使用自定义协议启动应用程序,但我的问题是,
是否有可能获得应用程序响应并使用javascript在Web浏览器中打印它?
例如,如果我将请求发送到协议myapp://,那将打开一个用C#编写的应用程序,该应用程序将返回字符串"This is response"可以在Web浏览器中打印它吗?
如果是这样,你能帮助我完成它吗?
提前致谢.
我正在尝试编写完整的多部分流,从客户端使用Spring restTemplate发送多部分请求,并从服务器端自动解析对象的不同部分(我使用JAXB进行对象编组)并在multipart中发回响应.
我能够实现几乎所有流程但我无法使用spring控制器的jaxb对象发送多部分响应.
这是控制器代码:
@RequestMapping(value="/putuser",method=RequestMethod.POST)
@ResponseBody
public MultiValueMap<String, Object> getUser(@RequestBody User user) throws IOException, JAXBException {
}
user.setName("new");
MultiValueMap<String, Object> form = new LinkedMultiValueMap<String, Object>();
form.add("user", user);
form.add("file", new FileSystemResource("/tmp/1.1"));
return form;
}
Run Code Online (Sandbox Code Playgroud)
这是我在服务器端获得的例外:
java.lang.ClassCastException: org.springframework.core.io.FileSystemResource cannot be cast to java.lang.String
at org.springframework.http.converter.FormHttpMessageConverter.writeForm(FormHttpMessageConverter.java:233)
at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:197)
at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:73)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:189)
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:69)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:746)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:687)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
Run Code Online (Sandbox Code Playgroud)
看起来Spring试图将响应中的每个部分转换为String而不是正确的内容类型(file/xml etc /)我试图更新我的spring.xml文件,如下所示:
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.FormHttpMessageConverter">
<property name="partConverters">
<list> …Run Code Online (Sandbox Code Playgroud) 如果成功进行AJAX调用,我有一个包含一个表单和两个可能响应的页面,其中一个只返回状态代码.
我需要做的是检查response成功回调中的对象是否有任何HTML内容,以便我可以在我的页面上显示它们.
我已经知道我可以response通过添加它作为参数来访问我的回调,如下所示:
function success(response) { }
我唯一想知道的是如何检查该对象是否有任何HTML内容.我怎样才能做到这一点?
使用此函数可以展平从版本 4 上的 Strapi 返回的响应。帮助您摆脱数据和属性属性
这将为您提供与 Strapi 版本 3 相同的响应结构。这将帮助您轻松从版本 3 迁移到版本 4。
如何使用它?
注意:此处的数据是从 Strapi 版本 4 返回的响应。
export const flattenObj = (data) => {
const isObject = (data) =>
Object.prototype.toString.call(data) === "[object Object]";
const isArray = (data) =>
Object.prototype.toString.call(data) === "[object Array]";
const flatten = (data) => {
if (!data.attributes) return data;
return {
id: data.id,
...data.attributes,
};
};
if (isArray(data)) {
return data.map((item) => flattenObj(item));
}
if (isObject(data)) {
if (isArray(data.data)) { …Run Code Online (Sandbox Code Playgroud)