小编rme*_*dor的帖子

WSDL 最佳实践

我正在开发一个与第三方集成的 SOAP 应用程序。我觉得这个第三方的WSDL很奇怪。我对 SOAP 还很陌生,所以如果它没有损坏,我不想要求他们修复它。以下是我注意到的一些我认为错误的事情,尽管我确信它在技术上是有效的文档(因此我在标题中写了“最佳实践”)。另外,我使用 gSOAP 作为我的 SOAP 库,这可能就是为什么我认为其中一些事情很奇怪(我对 gSOAP 的了解甚至比对一般 SOAP 的了解还要新)。

  1. 它们在同一 WSDL 中具有为 SOAP 1.1 和 SOAP 1.2 指定的接口。这导致 gSOAP 生成所需数量的两倍,因为我只使用 1.2。

  2. 他们所有的命名空间都是http://tempuri.org. 不应该是这样的,对吧?

  3. 尽管定义了一堆 RPC 调用,但它们的 WSDL 使用文档格式。我正在考虑要求他们切换到 RPC 格式,因为 gSOAP 似乎不会生成采用 C++ 类型参数作为文档格式的方法。相反,它为每个 API 函数的输入和响应数据创建一个新类。如果我无法解决这个问题,我将不得不编写另一层包裹 gSOAP 的内容,以便为我的应用程序的其余部分提供合理的 API。另外,AFAICT,如果他们切换到 RPC,那么来回的 XML 将与现在完全相同,所以我认为这不会很困难。

  4. 元素的 minOccurs = 0 但当我提交没有它们的请求时,我会收到返回的错误,表明它们是必需的(有时甚至是空指针异常的堆栈跟踪)。如果需要的话,他们应该将它们指定为 minOccurs = 1,对吧?

  5. 几乎所有 Web 服务函数都指定一个响应,其中包含一个表示成功的整数(实际上是一个布尔值)和一个错误消息字符串。他们应该为此使用 SOAP 错误吗?我认为如果这是一个错误,我的应用程序会更容易处理,因为 gSOAP 可以让我很容易地弄清楚这一点(并简单地打印错误消息)。

当然,我并不对这家第 3 方公司仅仅因为我要求他们改变他们的 WSDL 就抱有很高的希望。至少我会学到一些东西……据我所知,这些都没有错,甚至没有问题。感谢您的帮助。

soap wsdl gsoap

5
推荐指数
1
解决办法
1万
查看次数

如何在powershell中使用表达式作为函数参数

这是我用过的每种语言都非常简单的任务,但我似乎无法在PowerShell中弄明白.我在C中谈论的一个例子:

abs(x + y)
Run Code Online (Sandbox Code Playgroud)

x + y评估表达式,结果abs作为参数传递给我...如何在PowerShell中执行此操作?到目前为止,我唯一想到的方法是创建一个临时变量来存储表达式的结果,然后传递它.

PowerShell似乎有非常奇怪的语法和解析规则,不断地让我感到惊讶,就像这种情况一样.有没有人知道解释语言基本理论的文档或教程?我无法相信这些都是特殊情况,必须有一些押韵或理由,我还没有阅读过的教程解释.是的,我已经阅读了这个问题,所有这些教程都很糟糕.我几乎被降级为从现有代码中学习.

parameters powershell function

5
推荐指数
1
解决办法
1448
查看次数

使用boost multi_index_container来保留插入顺序

我最初开始使用a std::multimap来存储具有相同键的许多值,但后来我发现它不会保留具有相同键的值之间的插入顺序. 这个答案声称它可以完成boost::multi_index::multi_index_container,但没有举例.通过文档查看,没有这种用法的例子,我无法对你应该如何使用这个东西做出正面或反面.我开始期待来自较少使用的boost库的文档很差,但这需要蛋糕.任何人都可以指向一个教程或示例,显示它使用我想要的方式,或者甚至可能自己提供一个示例?

c++ boost multimap multi-index

5
推荐指数
1
解决办法
2899
查看次数

将unsigned存储在unsigned int的低16位中

我在嵌入式系统上编写C语言.处理器架构是32位(sizeof(int)32位,sizeof(short)16位).有一个32位变量,它是一个内存映射控制寄存器(CTRL_REG),它被指定为只使用了底部的16位,它们包含一个带符号的16位整数值(写入更高的位没有任何影响).内存访问必须是32位对齐,所以我不能只是将指针碰到几个字节,而且我不能假设一个字节序.我担心通过将符号位扩展到第31位而不是将它留在我想要的第15位,自动类型提升会使我正在存储的内容混乱.在这个位置存放东西的最佳方法是什么?

这是我的原始代码,我几乎肯定是错的:

#define CTRL_REG   *((volatile unsigned int *)0x4000D008u)
short calibrationValue;

CTRL_REG = -2 * calibrationValue;
Run Code Online (Sandbox Code Playgroud)

然后我尝试了这个,但我认为它仍然可能在作业点受到整数提升:

CTRL_REG = (short)(-2 * calibrationValue);
Run Code Online (Sandbox Code Playgroud)

最后我想到了这个:

CTRL_REG = (unsigned short)(short)(-2 * calibrationValue);
Run Code Online (Sandbox Code Playgroud)

我无法很好地评估这些选项,因为它们都在我的测试中工作,因为它们calibrationValue是负的(它是每个设备特定的校准参数,因此在某些设备上可能是正的),所以在乘以-2后,我结束存储一个正值,因此我实际上没有遇到我在测试中期待的问题.

非常感谢您的帮助,即使只是说"您的想法太多".

c embedded integer-promotion

5
推荐指数
1
解决办法
1253
查看次数

给定权限名称,如何找到 PermissionGroup?

我想在运行时查找某个权限的权限组(在用户选中提示上的“不再询问”按钮后,在 UI 中提供有关如何访问“设置”然后启用该权限的指导)。因此,我需要权限组的人类可读名称,但我拥有的只是机器可读的完全限定权限字符串 ( Manifest.permission.READ_PHONE_STATE)。有没有办法做到这一点?

android android-permissions

5
推荐指数
1
解决办法
1972
查看次数

调用函数时首选错误的参数转换

我正在用MS Visual C++ 6.0编写一个程序(是的,我知道它很古老,没有什么我可以做的升级).我看到一些我认为非常奇怪的行为.我有一个类,有两个构造函数定义如下:

class MyClass
{
public:
    explicit MyClass(bool bAbsolute = true, bool bLocation = false) : m_bAbsolute(bAbsolute), m_bLocation(bLocation) { ; }
    MyClass(const RWCString& strPath, bool bLocation = false);

private:
    bool m_bAbsolute;
    bool m_bLocation;
};
Run Code Online (Sandbox Code Playgroud)

当我使用以下语法实例化此类的实例时:MyClass("blah")它调用第一个构造函数.正如你所看到的,我添加了explicit关键字,希望它不会那样做......没有骰子.这样看来,从喜欢转换const char *bool通过转换RWCString,其中有一个拷贝构造函数,这需要const char *.为什么这样做?我认为如果有两个可能的选择,就会说这是不明确的.我该怎么做才能阻止它这样做?如果可能的话,我想避免必须明确地将strPath参数转换为a RWCString,因为它将与文字一起使用很多,并且这是一个额外的输入(加上一个非常容易犯的错误).

c++ constructor arguments visual-c++-6

3
推荐指数
2
解决办法
618
查看次数

operator << overload c ++

我如何重载"<<"运算符(对于cout)所以我可以对类k进行"cout"

c++ operator-overloading stream

3
推荐指数
1
解决办法
525
查看次数

从 Xcode 安装应用程序的发行版本

我正在开发一个 iPhone 应用程序,我的测试版用户(通过 Hockey)报告了一些我无法重现的问题。我相信这与我通过 xcode 在我的设备上运行时得到的内容和测试用户通过 hockey 从存档包中得到的内容之间的构建差异有关。有什么方法可以让 xcode 将与我发布给测试用户的版本相同的版本放在我的设备上吗?

xcode archive ios

0
推荐指数
1
解决办法
1721
查看次数

为多个JSON模式重用一个对象

我有两个单独的JSON模式(用于验证REST API的HTTP请求端点),它们都接受相同的确切对象,但具有不同的必需字段(这是创建与更新请求).有没有办法可以重用此对象的单个定义并仅更改必填字段?我知道如何使用$ref重用对象作为另一个对象的属性,但我无法弄清楚如何将整个对象重用为模式中的顶级对象.到目前为止我失败的尝试:

event.json

{
  "id": "event",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "start_date": {
      "type": "integer"
    },
    "end_date": {
      "type": "integer"
    },
    "description": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
Run Code Online (Sandbox Code Playgroud)

事件create.json

{
  "id": "event-create",
  "type": "object",
  "$ref": "event",
  "additionalProperties": false,
  "required": [ "name", "description" ]
}
Run Code Online (Sandbox Code Playgroud)

显然这不起作用.似乎它试图将"事件"的全部内容插入到"event-create"的定义中,包括ID等.我试过推荐event#/properties无济于事.我似乎无法$ref在属性属性中作为唯一值.有任何想法吗?

jsonschema

0
推荐指数
1
解决办法
2272
查看次数