我是.NET世界的新手,但必须使用VStudio C#2010(.NET 4.0)来生成以SOAP Xml方式从Web服务请求数据的客户端.我在这里寻找答案,但更加困惑.MSDN表示"构建XML Web服务客户端"是.NET 4.0的遗产,即WSDL是遗留的.他们说,使用"WCF".在WCF我迷路了 - 太多太模糊了.它必须更简单......以及我可以在网上找到的所有例子 - 它们都使用WSDL,"遗产".
以下是为了从Web服务获取数据而需要使用的服务的定义:
请求:
POST /catalog.asmx HTTP/1.1
Host: www.somewebsite.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://www.somewebsite.com/KeywordSearch"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<KeywordSearch xmlns="https://www.somewebsite.com/">
<searchTerm>string</searchTerm>
<resultsReturned>int</resultsReturned>
</KeywordSearch>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
响应:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
...some stuff...
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
那么,构建这个简单客户端的正确方法,或者至少是最合理的方式是什么?您会向新手建议哪些工具/库/方法(假设是VS 2010 C#,.NET 4.0环境)?
我知道一个servlet容器,比如Apache Tomcat,在JVM的单个实例中运行,这意味着它的所有servlet都将在同一个进程中运行.
我也知道servlet容器的体系结构意味着每个Web应用程序都存在于它自己的上下文中,这表明它与其他Web应用程序是隔离的.
如下所示:

接受每个Web应用程序是孤立的,我希望您可以创建相同Web应用程序的2个副本,更改每个Web应用程序的名称和上下文路径(以及任何其他相关配置),并且并行运行它们而不会影响其他.这个问题的答案似乎支持这种观点.
然而,一位同事根据他们尝试这种做法的经验不同意.
他们拿了一个Web应用程序并尝试在同一个servlet容器中运行2个单独的实例(具有不同的名称等),并且遇到了2个实例冲突的问题(由于我没有参与该工作,我无法详细说明).
基于此,他们认为,由于Web应用程序在相同的进程空间中运行,因此它们不能被隔离,诸如类属性之类的东西最终会被无意中共享.这个答案似乎暗示了同样的事情
这两个视图似乎不兼容,所以我问你: servlet容器是否阻止部署到同一容器的Web应用程序相互冲突?
如果是的话,他们是如何做到的?
如果不是,为什么会发生干扰?
最后,在什么情况下可以分离Web应用程序冲突并导致彼此干扰?,可能涉及文件系统,本机代码或数据库连接上的资源的场景?
在这个插件中:
http://dansnetwork.com/2010/03/27/content-expirator-jquery-content-expiration-plugin/
他将过期日期d与当前日期进行比较today,但我不明白today今天的日期是如何知道的new Date():
(function($){
$.contentExpirator = function(prfx){
var pfix = prfx || 'exp';
$("[class|="+pfix+"]").each(function(){
var eString = $(this).attr('class').split(' ')[0];
var dString = eString.split('-');
var d = new Date(dString[1],dString[2].toString()-1,dString[3]);
var today = new Date();
if(d < today){
$(this).css('display','none');
}
});
}
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
代码工作正常,我只是出于对未来的好奇心.
我有一个从x-plane通过UDP发送的字节数组.字节(4)都是浮点数或整数...我试图将它们转换为浮点数但到目前为止没有运气...
示例数组:字节数据[41] = { - 66,30,73,0};
如何将4个字节转换为int或float并且不浮动使用8个字节?
我正在学习在 F# 中处理列表和元组,但出现了一个问题。我有两个列表:一个是名字,一个是名字,年龄。
let namesToFind = [ "john", "andrea" ]
let namesAndAges = [ ("john", 10); ("andrea", 15) ]
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个函数,该函数将返回在给定 namesToFind 的 namesAndAges 中找到的第一个年龄。只是第一个。
到目前为止,我有以下代码返回整个元组(“john”,10)。
let findInList source target =
let itemFound = seq { for n in source do
yield target |> List.filter (fun (x,y) -> x = n) }
|> Seq.head
itemFound
Run Code Online (Sandbox Code Playgroud)
我尝试在返回语句中使用 fst() 但它没有编译并给我“这个表达式应该有类型 'a * 'b 但这里有类型 ('c * 'd) 列表”
谢谢你的帮助!
我正在将VB库转换为C#.我的一个方法在VB中有以下签名:
Private Shared Sub FillOrder(ByVal row As DataRowView, ByRef o As Order)
Run Code Online (Sandbox Code Playgroud)
在C#中我把它转换为:
private static void FillOrder(DataRowView row, ref Order o)
Run Code Online (Sandbox Code Playgroud)
从我的Order类中的构造函数,我调用这样的FillOrder()方法:
DataView dv = //[get the data]
if (dv.Count > 0)
{
FillOrder(dv[0], this);
}
Run Code Online (Sandbox Code Playgroud)
在VB中,这有效:
Dim dv As DataView = '[get data]'
If dv.Count > 0 Then
FillOrder(dv.Item(0), Me)
End If
Run Code Online (Sandbox Code Playgroud)
但是,在C#文件的VS10中,我在此调用下遇到红色波形,并出现以下错误:
[方法]的最佳重载方法匹配有一些无效的参数
这是VB中的工作代码.我究竟做错了什么?
我顶着脑袋却无法解决这个问题.
数字,名字都是虚构的.但这个想法是这样的
我读了一个像'https://graph.facebook.com/123'这样的链接
这导致源代码:
{
"id": "123",
"name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"link": "http://www.facebook.com/people/John-Doe/123",
"gender": "male",
"locale": "en_US"
}
Run Code Online (Sandbox Code Playgroud)
我想提取id,name等的所有信息.
我试试这个,但它失败了
link = 'https://graph.facebook.com/123'
result = browser.open(link)
text = result.read()
result.close()
id = re.search('"id": "(.*?)",', cont)
Run Code Online (Sandbox Code Playgroud)
正则表达式""id":"(.*?)","似乎是正确的,但后面没有返回..为什么???
我正在尝试创建一个有弹出窗口的扩展程序.我希望能够使用浏览器操作图标和键盘快捷方式打开它.我能够将keyup事件路由到我的控制器,但我不确定如何以编程方式实际打开弹出窗口.是否有可以触发的事件或我可以调用的API?
谢谢!
在我所拥有的ASP.net MVC 2应用程序中,我想要对post操作返回204 No Content响应.当前我的控制器方法有一个void返回类型,但这会将客户端的响应发送回200 OK,并将Content-Length标头设置为0.如何将响应发送到204?
[HttpPost]
public void DoSomething(string param)
{
// do some operation with param
// now I wish to return a 204 no content response to the user
// instead of the 200 OK response
}
Run Code Online (Sandbox Code Playgroud) 我无法确定是否以及如何使用sed进行干运行.
所以我有这个命令:
find ./ -type f | xargs sed -i 's/string1/string2/g'
Run Code Online (Sandbox Code Playgroud)
但在我真正替换所有文件之前,我想检查一下它会替代什么.复制整个目录结构进行检查是没有选择的!
感谢您的任何反馈(消极或积极:))