小编Sam*_*Sam的帖子

在 Go 中解组 SOAP 响应

我正在对 API 进行 SOAP 调用,这是一个示例响应:

<?xml version="1.0" encoding="utf-8" ?>
 <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:body>
      <soapenv:fault>
        <faultcode>
          ERR109
        </faultcode>
        <faultstring>
          Account Expired. Result code is 2163
        </faultstring>
        <detail>
          <ns1:serviceexception xmlns:ns1="http://www.csapi.org/schema/parlayx/common/v2_1">
            <messageid>
              ERR109
            </messageid>
            <text>
              Account Expired. Result code is 2163
            </text>
            <variables>
              2163
            </variables>
          </ns1:serviceexception>
        </detail>
      </soapenv:fault>
    </soapenv:body>
  </soapenv:envelope>
Run Code Online (Sandbox Code Playgroud)

为了解组这个响应,我构建了一些结构:

type SoapResponse struct {
    Body    ResponseBody `soapenv:"body"`
}
type ResponseBody struct {
    Fault   Fault    `soapenv:"fault"`
}
type Fault struct {
    FaultCode   string `xml:"faultcode"`
    FaultString string `xml:"faultstring"`
    Detail      Detail `xml:"detail"`
}
type Detail …
Run Code Online (Sandbox Code Playgroud)

soap go unmarshalling

6
推荐指数
1
解决办法
1033
查看次数

为什么char name [1]可以容纳超过1个字符?

当我遇到这种情况时,我正在对一个主题进行一些研究.假设以下C代码:

#include <stdio.h>
int main() {
char name[1];
scanf("%s",name);
printf("Hi %s",name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编译-fno-stack-protector并使用超过1的输入进行测试,就像John,令我惊讶的是,它的工作原理!
当输入长于1时,它不应该抛出分段错误吗?
最终它打破了Alexander输入(9),但它适用于任何小于9的内容.
为什么它的输入长于名称数组长度?
PS:我使用Ubuntu(64位),gcc版本4.8.4(Ubuntu 4.8.4-2ubuntu1~14.04)和CLion作为IDE.

c buffer gcc segmentation-fault

4
推荐指数
1
解决办法
3189
查看次数

C#中的数组声明语法是否有原因?

我想知道语法背后的原因是什么?我的意思是这样的:

int[ , ] arrayName = new int[10,10];
Run Code Online (Sandbox Code Playgroud)

如果我们有类似的东西,那会不会更简单:

int[10,10] arrayName ;
Run Code Online (Sandbox Code Playgroud)

是什么导致软件架构师做出这样的决定?

c# architecture arrays syntax software-design

2
推荐指数
1
解决办法
96
查看次数

为什么这段代码使用Async方法?

当我遇到这段代码时,我正在阅读关于Microsoft Identity的这篇文章:

// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
        var result = await _userManager.CreateAsync(user, model.Password);
        if (result.Succeeded) {
       //.. REDUCTED .. //
       }
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这个代码正在使用CreateAsync并等待它,而不是使用同步方法?
现在,这会阻塞直到CreateAsync返回,为什么不使用同步方法呢?使用异步方法和等待它有什么区别,优点或原因?
谢谢

c# async-await

2
推荐指数
1
解决办法
73
查看次数