Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The tengine proxy request will return a data size of 0kb, but the logging status code is 200, and the user client displays the request as failed. #1852

Open
sunshuxin opened this issue Aug 17, 2023 · 15 comments
Assignees

Comments

@sunshuxin
Copy link

sunshuxin commented Aug 17, 2023

Please help to check the influencing factors and see if there is a way to avoid recording the 200HTTP status code. If the data transmission is incomplete, can it return an error in the 5XX status code to avoid not perceiving business anomalies。

Reproduction environment:
jmeter------->nginx1---------->CA-nginx----------->RA----------->CA
jmeter:Simulated user
nginx1:Simulate front-end proxy
CA-nginx1:Simulate backend
Site configuration:
server {
listen 9999;
server_name nginx1Accessing Domain Names for Users;
index index.html index.htm index.jsp index.do;
root html;
location / {
proxy_pass http://Backend CA-nginx domain name;
access_log /usr/local/nginx/logs/testra-demo-local.log main;
proxy_connect_timeout 800ms;
proxy_read_timeout 800ms;
proxy_send_timeout 800ms;
proxy_next_upstream_tries 2;
proxy_next_upstream_timeout 3;
proxy_next_upstream http_504 http_502 error timeout invalid_header non_idempotent ;
}
}

Test steps:
Simulate direct requests from users to the CA agent, resulting in 30% packet loss by the CA nginx agent
Execute on CA nginx: tc qdisc add dev eth0 root netem loss 30%
Test completion:tc qdisc del dev eth0 root netem loss 30% Turn off packet loss
Simulate user visa processing in jmeter for 10 concurrent 300 seconds

Note: The reason for the speed limit is only to make it easier to reproduce the problem, and this type of phenomenon often occurs on the business side without the speed limit.

Packet capture information:

  1. nginx1 packet capture (1). cap packet capture file
    Filter condition: tcp.stream eq 276
    The request from the client to nginx1 has a status of 200 returned from nginx1. From packet capturing, it can be seen that when the backend ca-nginx has not yet fully returned data, the tengine on nginx returns data to the client, but does not include response data.

image
image
77ead52762d7f30df6a6a402c24311cc
0968c2fe38ea255514939eb1aa1d135a
image

  1. Filter conditions: tcp.stream eq 278:
    The interaction process from nginx1 to backend ca-nginx, from packet capture, shows that the response part returned by the data is included in the packet, but the data packet was actively dropped by nginx1.

image

  1. Capture packets on the ca nginx end:
    Filter condition: tcp.stream eq 613, and the response information of the package is also complete.
    image

  2. Engine version: engine: 3.0.0
    75037e721c75ba319bad0c5882070e62

  3. Tengine configuration on nginx1:
    6ca67b85e1282870250ca0fe3492c00b
    image
    image

7.Normal contract information

image
image
image

@jack-yli
Copy link

image
image
image
image

Add some information to address the above issues

At present, it has been found that all agents using different versions of tengine have encountered a request with a 0kb and status code of 200. However, the old agents using nginx have not found this situation. It is currently suspected that it is a problem with the tengine processing process. The business mode of all agents using nginx and tengine is the same.

@chobits
Copy link
Member

chobits commented Aug 19, 2023

Could you provide us with a minimal reproducible example?
For instance, utilize the curl command to replicate the unsuccessful request, along with specific nginx configuration details.

From the tcpdump package log, you can reconstruct the request with curl command. Then use that command to request nginx and try to reproduce

@chobits
Copy link
Member

chobits commented Aug 19, 2023

Another potentially valuable suggestion could involve referencing the debug log for nginx/tengine. This would significantly enhance our ability to address the issue effectively. This would greatly speed up the problem addressing process if you could furnish us with the debug log pertaining to the unsuccessful request.

@sunshuxin
Copy link
Author

Hello, there are records in the error log: client Backend instance ip closed keepalive connection
e2ff238cd53f3e6b1c19a8e01aadf8f1
Do you have any helpful information.

@jack-yli
Copy link

The return data of the abnormal curl was replicated using curl. Currently, a request with incomplete transmission has been replicated, and the normal return size is around 40164, while this incomplete request is only 28579

root@VTN-ubuntu:~/wangyuhao# curl http://xxx.xxx.54.34:9999/services/userAPI?wsdl

wsdl:types
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://service.ra.tca.topca.cn/" xmlns:tns="http://service.ra.tca.topca.cn/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="queryCertResult">
xs:sequence
<xs:element name="totalSize" type="xs:int"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="certInfos" nillable="true" type="tns:certInfo"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="userInfos" nillable="true" type="tns:userInfo"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="certInfo">
xs:sequence
<xs:element minOccurs="0" name="certStatus" type="xs:string"/>
<xs:element minOccurs="0" name="certReqDate" type="xs:string"/>
<xs:element minOccurs="0" name="certReqTransid" type="xs:string"/>
<xs:element minOccurs="0" name="certReqNonce" type="xs:string"/>
<xs:element minOccurs="0" name="certReqBufType" type="xs:string"/>
<xs:element minOccurs="0" name="certReqChallenge" type="xs:string"/>
<xs:element minOccurs="0" name="certReqComment" type="xs:string"/>
<xs:element minOccurs="0" name="certApproveDate" type="xs:string"/>
<xs:element minOccurs="0" name="certRejectDate" type="xs:string"/>
<xs:element minOccurs="0" name="certSignDate" type="xs:string"/>
<xs:element minOccurs="0" name="certSerialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="certNotBefore" type="xs:string"/>
<xs:element minOccurs="0" name="certNotAfter" type="xs:string"/>
<xs:element minOccurs="0" name="certIssuerHashMd5" type="xs:string"/>
<xs:element minOccurs="0" name="certIssuerDn" type="xs:string"/>
<xs:element minOccurs="0" name="certSubjectHashMd5" type="xs:string"/>
<xs:element minOccurs="0" name="certSubjectDn" type="xs:string"/>
<xs:element minOccurs="0" name="certSuspendDate" type="xs:string"/>
<xs:element minOccurs="0" name="certRevokeDate" type="xs:string"/>
<xs:element minOccurs="0" name="certRevokeReason" type="xs:string"/>
<xs:element minOccurs="0" name="certRenewalDate" type="xs:string"/>
<xs:element name="certRenewalPrevId" type="xs:int"/>
<xs:element name="certRenewalNextId" type="xs:int"/>
<xs:element name="certReqOverrideValidity" type="xs:int"/>
<xs:element name="id" type="xs:int"/>
<xs:element minOccurs="0" name="certReqBuf" type="xs:string"/>
<xs:element minOccurs="0" name="certSignBuf" type="xs:string"/>
<xs:element minOccurs="0" name="certPin" type="xs:string"/>
<xs:element minOccurs="0" name="certType" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcReq1" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcReq2" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcReq3" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcRep1" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcRep2" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcRep3" type="xs:string"/>
<xs:element minOccurs="0" name="certDeliverMode" type="xs:string"/>
<xs:element minOccurs="0" name="certApproveAdmin1" type="xs:string"/>
<xs:element minOccurs="0" name="certApproveAdmin2" type="xs:string"/>
<xs:element minOccurs="0" name="certRenewemailDeliver" type="xs:string"/>
<xs:element minOccurs="0" name="certReqBufKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certReqBufTypeKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certSignBufKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certSignBufP7Kmc" type="xs:string"/>
<xs:element minOccurs="0" name="certSignBufP7" type="xs:string"/>
<xs:element minOccurs="0" name="certSerialnumberKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certTypeKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certReqPublickey" type="xs:string"/>
<xs:element minOccurs="0" name="certReqPublickeyHashMd5" type="xs:string"/>
<xs:element minOccurs="0" name="certIdRandom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="userInfo">
xs:sequence
<xs:element name="accountId" type="xs:int"/>
<xs:element minOccurs="0" name="userName" type="xs:string"/>
<xs:element minOccurs="0" name="userSurname" type="xs:string"/>
<xs:element minOccurs="0" name="userSerialnumber" type="xs:string"/>
<xs:element minOccurs="0" name="userEmail" type="xs:string"/>
<xs:element minOccurs="0" name="userOrganization" type="xs:string"/>
<xs:element minOccurs="0" name="userOrgunit" type="xs:string"/>
<xs:element minOccurs="0" name="userCountry" type="xs:string"/>
<xs:element minOccurs="0" name="userState" type="xs:string"/>
<xs:element minOccurs="0" name="userLocality" type="xs:string"/>
<xs:element minOccurs="0" name="userStreet" type="xs:string"/>
<xs:element minOccurs="0" name="userDns" type="xs:string"/>
<xs:element minOccurs="0" name="userIp" type="xs:string"/>
<xs:element minOccurs="0" name="userTitle" type="xs:string"/>
<xs:element minOccurs="0" name="userDescription" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField1" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField2" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField3" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField4" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField5" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField6" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField7" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField8" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField9" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField10" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="accountInfo">
xs:sequence
<xs:element minOccurs="0" name="parentHash" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="accountConfig" type="tns:accountConfigResult"/>
<xs:element minOccurs="0" name="accountOrganization" type="xs:string"/>
<xs:element minOccurs="0" name="accountOrgunit" type="xs:string"/>
<xs:element minOccurs="0" name="accountEmail" type="xs:string"/>
<xs:element minOccurs="0" name="accountStatus" type="xs:string"/>
<xs:element name="accountOrder" type="xs:int"/>
<xs:element name="accountQuantity" type="xs:int"/>
<xs:element minOccurs="0" name="accountServiceEndDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountEnrollDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountApproveDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountRejectDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountSuspendDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountCertDeliver" type="xs:string"/>
<xs:element minOccurs="0" name="accountAutoDeliver" type="xs:string"/>
<xs:element name="accountCertOrder" type="xs:int"/>
<xs:element name="accountCertQuantity" type="xs:int"/>
<xs:element name="accountOcspOrder" type="xs:int"/>
<xs:element name="accountOcspQuantity" type="xs:int"/>
<xs:element name="accountMinAdmin" type="xs:int"/>
<xs:element minOccurs="0" name="accountType" type="xs:string"/>
<xs:element name="accountRenewDay" type="xs:int"/>
<xs:element minOccurs="0" name="accountServiceURL" type="xs:string"/>
<xs:element name="accountChoose" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="accountConfigResult">
xs:sequence
<xs:element minOccurs="0" name="certTemplate" type="xs:string"/>
<xs:element minOccurs="0" name="serviceUrl" type="xs:string"/>
<xs:element minOccurs="0" name="algorithm" type="xs:string"/>
<xs:element minOccurs="0" name="isDoubleCert" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="RaServiceUnavailable" type="tns:RaServiceUnavailable"/>
<xs:complexType name="RaServiceUnavailable">
xs:sequence
<xs:element name="errorCode_" nillable="true" type="xs:int"/>
<xs:element name="message_" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertByCertId" type="tns:queryCertByCertId"/>
<xs:complexType name="queryCertByCertId">
xs:sequence
<xs:element name="certId" type="xs:int"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertByCertIdResponse" type="tns:queryCertByCertIdResponse"/>
<xs:complexType name="queryCertByCertIdResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:queryCertResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="unsuspendCert" type="tns:unsuspendCert"/>
<xs:complexType name="unsuspendCert">
xs:sequence
<xs:element minOccurs="0" name="serialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="unsuspendCertResponse" type="tns:unsuspendCertResponse"/>
<xs:complexType name="unsuspendCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="queryCerts" type="tns:queryCerts"/>
<xs:complexType name="queryCerts">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="certInfo" type="tns:certInfo"/>
<xs:element name="pageIndex" type="xs:int"/>
<xs:element name="pageSize" type="xs:int"/>
<xs:element minOccurs="0" name="sqlTemplateFileName" type="xs:string"/>
<xs:element minOccurs="0" name="nextResultTag" type="xs:string"/>
<xs:element minOccurs="0" name="totalTag" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertsResponse" type="tns:queryCertsResponse"/>
<xs:complexType name="queryCertsResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:queryCertResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadDeltaCRL" type="tns:downloadDeltaCRL"/>
<xs:complexType name="downloadDeltaCRL">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadDeltaCRLResponse" type="tns:downloadDeltaCRLResponse"/>
<xs:complexType name="downloadDeltaCRLResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="getCertChainByAccount" type="tns:getCertChainByAccount"/>
<xs:complexType name="getCertChainByAccount">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="getCertChainByAccountResponse" type="tns:getCertChainByAccountResponse"/>
<xs:complexType name="getCertChainByAccountResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadCRL" type="tns:downloadCRL"/>
<xs:complexType name="downloadCRL">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadCRLResponse" type="tns:downloadCRLResponse"/>
<xs:complexType name="downloadCRLResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="enrollCert" type="tns:enrollCert"/>
<xs:complexType name="enrollCert">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="certReqBuf" type="xs:string"/>
<xs:element minOccurs="0" name="certReqChallenge" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="enrollCertResponse" type="tns:enrollCertResponse"/>
<xs:complexType name="enrollCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="syncAccountInfo" type="tns:syncAccountInfo"/>
<xs:complexType name="syncAccountInfo">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="syncAccountInfoResponse" type="tns:syncAccountInfoResponse"/>
<xs:complexType name="syncAccountInfoResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:accountInfo"/>
</xs:sequence>
</xs:complexType>
<xs:element name="renewCertAA" type="tns:renewCertAA"/>
<xs:complexType name="renewCertAA">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="origin" type="tns:certInfo"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="aaCheckPoint" type="xs:string"/>
<xs:element minOccurs="0" name="passCode" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="renewCertAAResponse" type="tns:renewCertAAResponse"/>
<xs:complexType name="renewCertAAResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:certInfo"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadCA" type="tns:downloadCA"/>
<xs:complexType name="downloadCA">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadCAResponse" type="tns:downloadCAResponse"/>
<xs:complexType name="downloadCAResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="doScript" type="tns:doScript"/>
<xs:complexType name="doScript">
xs:sequence
<xs:element minOccurs="0" name="scriptName" type="xs:string"/>
<xs:element minOccurs="0" name="jsonMap" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="doScriptResponse" type="tns:doScriptResponse"/>
<xs:complexType name="doScriptResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="synchroTemplate" type="tns:synchroTemplate"/>
<xs:complexType name="synchroTemplate">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="synchroTemplateResponse" type="tns:synchroTemplateResponse"/>
<xs:complexType name="synchroTemplateResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:accountConfigResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertBySerialNumber" type="tns:queryCertBySerialNumber"/>
<xs:complexType name="queryCertBySerialNumber">
xs:sequence
<xs:element minOccurs="0" name="serialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertBySerialNumberResponse" type="tns:queryCertBySerialNumberResponse"/>
<xs:complexType name="queryCertBySerialNumberResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:queryCertResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="pickupCert" type="tns:pickupCert"/>
<xs:complexType name="pickupCert">
xs:sequence
<xs:element minOccurs="0" name="certPin" type="xs:string"/>
<xs:element minOccurs="0" name="certReqChallenge" type="xs:string"/>
<xs:element minOccurs="0" name="certReqBuf" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="pickupCertResponse" type="tns:pickupCertResponse"/>
<xs:complexType name="pickupCertResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:certInfo"/>
</xs:sequence>
</xs:complexType>
<xs:element name="revokeCert" type="tns:revokeCert"/>
<xs:complexType name="revokeCert">
xs:sequence
<xs:element minOccurs="0" name="serialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="certReqChallenge" type="xs:string"/>
<xs:element minOccurs="0" name="certRevokeReason" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="revokeCertResponse" type="tns:revokeCertResponse"/>
<xs:complexType name="revokeCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="renewCert" type="tns:renewCert"/>
<xs:complexType name="renewCert">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="origin" type="tns:certInfo"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="renewCertResponse" type="tns:renewCertResponse"/>
<xs:complexType name="renewCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="queryCertByCertId2" type="tns:queryCertByCertId2"/>
<xs:complexType name="queryCertByCertId2">
xs:sequence
<xs:element name="certId" type="xs:long"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertByCertId2Response" type="tns:queryCertByCertId2Response"/>
<xs:complexType name="queryCertByCertId2Response">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:queryCertResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="suspendCert" type="tns:suspendCert"/>
<xs:complexType name="suspendCert">
xs:sequence
<xs:element minOccurs="0" name="serialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="suspendCertResponse" type="tns:suspendCertResponse"/>
<xs:complexType name="suspendCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="enrollCertAA" type="tns:enrollCertAA"/>
<xs:complexType name="enrollCertAA">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="certReqBuf" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="aaCheckPoint" type="xs:string"/>
<xs:element minOccurs="0" name="passCode" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="enrollCertAAResponse" type="tns:enrollCertAAResponse"/>
<xs:complexType name="enrollCertAAResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:certInfo"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="enrollCertAA">
<wsdl:part element="tns:enrollCertAA" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertsResponse">
<wsdl:part element="tns:queryCertsResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCertChainByAccount">
<wsdl:part element="tns:getCertChainByAccount" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="doScriptResponse">
<wsdl:part element="tns:doScriptResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="renewCertAAResponse">
<wsdl:part element="tns:renewCertAAResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadDeltaCRL">
<wsdl:part element="tns:downloadDeltaCRL" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="syncAccountInfo">
<wsdl:part element="tns:syncAccountInfo" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertBySerialNumberResponse">
<wsdl:part element="tns:queryCertBySerialNumberResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadCRLResponse">
<wsdl:part element="tns:downloadCRLResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="RaServiceUnavailable">
<wsdl:part element="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:part>
</wsdl:message>
<wsdl:message name="suspendCertResponse">
<wsdl:part element="tns:suspendCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadDeltaCRLResponse">
<wsdl:part element="tns:downloadDeltaCRLResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="revokeCertResponse">
<wsdl:part element="tns:revokeCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertBySerialNumber">
<wsdl:part element="tns:queryCertBySerialNumber" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="doScript">
<wsdl:part element="tns:doScript" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="pickupCertResponse">
<wsdl:part element="tns:pickupCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="enrollCertResponse">
<wsdl:part element="tns:enrollCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="unsuspendCertResponse">
<wsdl:part element="tns:unsuspendCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertByCertId2Response">
<wsdl:part element="tns:queryCertByCertId2Response" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="enrollCert">
<wsdl:part element="tns:enrollCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="enrollCertAAResponse">
<wsdl:part element="tns:enrollCertAAResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertByCertId2">
<wsdl:part element="tns:queryCertByCertId2" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCertChainByAccountResponse">
<wsdl:part element="tns:getCertChainByAccountResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadCAResponse">
<wsdl:part element="tns:downloadCAResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadCA">
<wsdl:part element="tns:downloadCA" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCerts">
<wsdl:part element="tns:queryCerts" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertByCertId">
<wsdl:part element="tns:queryCertByCertId" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="synchroTemplate">
<wsdl:part element="tns:synchroTemplate" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="revokeCert">
<wsdl:part element="tns:revokeCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="synchroTemplateResponse">
<wsdl:part element="tns:synchroTemplateResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="renewCertResponse">
<wsdl:part element="tns:renewCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="renewCertAA">
<wsdl:part element="tns:renewCertAA" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="unsuspendCert">
<wsdl:part element="tns:unsuspendCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="pickupCert">
<wsdl:part element="tns:pickupCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="syncAccountInfoResponse">
<wsdl:part element="tns:syncAccountInfoResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="suspendCert">
<wsdl:part element="tns:suspendCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="renewCert">
<wsdl:part element="tns:renewCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadCRL">
<wsdl:part element="tns:downloadCRL" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertByCertIdResponse">
<wsdl:part element="tns:queryCertByCertIdResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="UserAPIServicePortType">
<wsdl:operation name="queryCertByCertId">
<wsdl:input message="tns:queryCertByCertId" name="queryCertByCertId">
</wsdl:input>
<wsdl:output message="tns:queryCertByCertIdResponse" name="queryCertByCertIdResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unsuspendCert">
<wsdl:input message="tns:unsuspendCert" name="unsuspendCert">
</wsdl:input>
<wsdl:output message="tns:unsuspendCertResponse" name="unsuspendCertResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="queryCerts">
<wsdl:input message="tns:queryCerts" name="queryCerts">
</wsdl:input>
<wsdl:output message="tns:queryCertsResponse" name="queryCertsResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="downloadDeltaCRL">
<wsdl:input message="tns:downloadDeltaCRL" name="downloadDeltaCRL">
</wsdl:input>
<wsdl:output message="tns:downloadDeltaCRLResponse" name="downloadDeltaCRLResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCertChainByAccount">
<wsdl:input message="tns:getCertChainByAccount" name="getCertChainByAccount">
</wsdl:input>
<wsdl:output message="tns:getCertChainByAccountResponse" name="getCertChainByAccountResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="downloadCRL">
<wsdl:input message="tns:downloadCRL" name="downloadCRL">
</wsdl:input>
<wsdl:output message="tns:downloadCRLResponse" name="downloadCRLResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="enrollCert">
<wsdl:input message="tns:enrollCert" name="enrollCert">
</wsdl:input>
<wsdl:output message="tns:enrollCertResponse" name="enrollCertResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="syncAccountInfo">
<wsdl:input message="tns:syncAccountInfo" name="syncAccountInfo">
</wsdl:input>
<wsdl:output message="tns:syncAccountInfoResponse" name="syncAccountInfoResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="renewCertAA">
<wsdl:input message="tns:renewCertAA" name="renewCertAA">
</wsdl:input>
<wsdl:output message="tns:renewCertAAResponse" name="renewCertAAResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="downloadCA">
<wsdl:input message="tns:downloadCA" name="downloadCA">
</wsdl:input>
<wsdl:output message="tns:downloadCAResponse" name="downloadCAResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="doScript">
<wsdl:input message="tns:doScript" name="doScript">
</wsdl:input>
<wsdl:output message="tns:doScriptResponse" name="doScriptResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="synchroTemplate">
<wsdl:input message="tns:synchroTemplate" name="synchroTemplate">
</wsdl:input>
curl: (18) transfer closed with outstanding read data remaining
<wsdl:output message="tns:synchroTemp

@jack-yli
Copy link

The data returned by curl normally

wsdl:types
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://service.ra.tca.topca.cn/" xmlns:tns="http://service.ra.tca.topca.cn/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="queryCertResult">
xs:sequence
<xs:element name="totalSize" type="xs:int"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="certInfos" nillable="true" type="tns:certInfo"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="userInfos" nillable="true" type="tns:userInfo"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="certInfo">
xs:sequence
<xs:element minOccurs="0" name="certStatus" type="xs:string"/>
<xs:element minOccurs="0" name="certReqDate" type="xs:string"/>
<xs:element minOccurs="0" name="certReqTransid" type="xs:string"/>
<xs:element minOccurs="0" name="certReqNonce" type="xs:string"/>
<xs:element minOccurs="0" name="certReqBufType" type="xs:string"/>
<xs:element minOccurs="0" name="certReqChallenge" type="xs:string"/>
<xs:element minOccurs="0" name="certReqComment" type="xs:string"/>
<xs:element minOccurs="0" name="certApproveDate" type="xs:string"/>
<xs:element minOccurs="0" name="certRejectDate" type="xs:string"/>
<xs:element minOccurs="0" name="certSignDate" type="xs:string"/>
<xs:element minOccurs="0" name="certSerialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="certNotBefore" type="xs:string"/>
<xs:element minOccurs="0" name="certNotAfter" type="xs:string"/>
<xs:element minOccurs="0" name="certIssuerHashMd5" type="xs:string"/>
<xs:element minOccurs="0" name="certIssuerDn" type="xs:string"/>
<xs:element minOccurs="0" name="certSubjectHashMd5" type="xs:string"/>
<xs:element minOccurs="0" name="certSubjectDn" type="xs:string"/>
<xs:element minOccurs="0" name="certSuspendDate" type="xs:string"/>
<xs:element minOccurs="0" name="certRevokeDate" type="xs:string"/>
<xs:element minOccurs="0" name="certRevokeReason" type="xs:string"/>
<xs:element minOccurs="0" name="certRenewalDate" type="xs:string"/>
<xs:element name="certRenewalPrevId" type="xs:int"/>
<xs:element name="certRenewalNextId" type="xs:int"/>
<xs:element name="certReqOverrideValidity" type="xs:int"/>
<xs:element name="id" type="xs:int"/>
<xs:element minOccurs="0" name="certReqBuf" type="xs:string"/>
<xs:element minOccurs="0" name="certSignBuf" type="xs:string"/>
<xs:element minOccurs="0" name="certPin" type="xs:string"/>
<xs:element minOccurs="0" name="certType" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcReq1" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcReq2" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcReq3" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcRep1" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcRep2" type="xs:string"/>
<xs:element minOccurs="0" name="certKmcRep3" type="xs:string"/>
<xs:element minOccurs="0" name="certDeliverMode" type="xs:string"/>
<xs:element minOccurs="0" name="certApproveAdmin1" type="xs:string"/>
<xs:element minOccurs="0" name="certApproveAdmin2" type="xs:string"/>
<xs:element minOccurs="0" name="certRenewemailDeliver" type="xs:string"/>
<xs:element minOccurs="0" name="certReqBufKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certReqBufTypeKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certSignBufKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certSignBufP7Kmc" type="xs:string"/>
<xs:element minOccurs="0" name="certSignBufP7" type="xs:string"/>
<xs:element minOccurs="0" name="certSerialnumberKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certTypeKmc" type="xs:string"/>
<xs:element minOccurs="0" name="certReqPublickey" type="xs:string"/>
<xs:element minOccurs="0" name="certReqPublickeyHashMd5" type="xs:string"/>
<xs:element minOccurs="0" name="certIdRandom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="userInfo">
xs:sequence
<xs:element name="accountId" type="xs:int"/>
<xs:element minOccurs="0" name="userName" type="xs:string"/>
<xs:element minOccurs="0" name="userSurname" type="xs:string"/>
<xs:element minOccurs="0" name="userSerialnumber" type="xs:string"/>
<xs:element minOccurs="0" name="userEmail" type="xs:string"/>
<xs:element minOccurs="0" name="userOrganization" type="xs:string"/>
<xs:element minOccurs="0" name="userOrgunit" type="xs:string"/>
<xs:element minOccurs="0" name="userCountry" type="xs:string"/>
<xs:element minOccurs="0" name="userState" type="xs:string"/>
<xs:element minOccurs="0" name="userLocality" type="xs:string"/>
<xs:element minOccurs="0" name="userStreet" type="xs:string"/>
<xs:element minOccurs="0" name="userDns" type="xs:string"/>
<xs:element minOccurs="0" name="userIp" type="xs:string"/>
<xs:element minOccurs="0" name="userTitle" type="xs:string"/>
<xs:element minOccurs="0" name="userDescription" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField1" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField2" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField3" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField4" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField5" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField6" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField7" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField8" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField9" type="xs:string"/>
<xs:element minOccurs="0" name="userAdditionalField10" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="accountInfo">
xs:sequence
<xs:element minOccurs="0" name="parentHash" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="accountConfig" type="tns:accountConfigResult"/>
<xs:element minOccurs="0" name="accountOrganization" type="xs:string"/>
<xs:element minOccurs="0" name="accountOrgunit" type="xs:string"/>
<xs:element minOccurs="0" name="accountEmail" type="xs:string"/>
<xs:element minOccurs="0" name="accountStatus" type="xs:string"/>
<xs:element name="accountOrder" type="xs:int"/>
<xs:element name="accountQuantity" type="xs:int"/>
<xs:element minOccurs="0" name="accountServiceEndDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountEnrollDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountApproveDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountRejectDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountSuspendDate" type="xs:string"/>
<xs:element minOccurs="0" name="accountCertDeliver" type="xs:string"/>
<xs:element minOccurs="0" name="accountAutoDeliver" type="xs:string"/>
<xs:element name="accountCertOrder" type="xs:int"/>
<xs:element name="accountCertQuantity" type="xs:int"/>
<xs:element name="accountOcspOrder" type="xs:int"/>
<xs:element name="accountOcspQuantity" type="xs:int"/>
<xs:element name="accountMinAdmin" type="xs:int"/>
<xs:element minOccurs="0" name="accountType" type="xs:string"/>
<xs:element name="accountRenewDay" type="xs:int"/>
<xs:element minOccurs="0" name="accountServiceURL" type="xs:string"/>
<xs:element name="accountChoose" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="accountConfigResult">
xs:sequence
<xs:element minOccurs="0" name="certTemplate" type="xs:string"/>
<xs:element minOccurs="0" name="serviceUrl" type="xs:string"/>
<xs:element minOccurs="0" name="algorithm" type="xs:string"/>
<xs:element minOccurs="0" name="isDoubleCert" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="RaServiceUnavailable" type="tns:RaServiceUnavailable"/>
<xs:complexType name="RaServiceUnavailable">
xs:sequence
<xs:element name="errorCode_" nillable="true" type="xs:int"/>
<xs:element name="message_" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertByCertId" type="tns:queryCertByCertId"/>
<xs:complexType name="queryCertByCertId">
xs:sequence
<xs:element name="certId" type="xs:int"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertByCertIdResponse" type="tns:queryCertByCertIdResponse"/>
<xs:complexType name="queryCertByCertIdResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:queryCertResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="unsuspendCert" type="tns:unsuspendCert"/>
<xs:complexType name="unsuspendCert">
xs:sequence
<xs:element minOccurs="0" name="serialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="unsuspendCertResponse" type="tns:unsuspendCertResponse"/>
<xs:complexType name="unsuspendCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="queryCerts" type="tns:queryCerts"/>
<xs:complexType name="queryCerts">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="certInfo" type="tns:certInfo"/>
<xs:element name="pageIndex" type="xs:int"/>
<xs:element name="pageSize" type="xs:int"/>
<xs:element minOccurs="0" name="sqlTemplateFileName" type="xs:string"/>
<xs:element minOccurs="0" name="nextResultTag" type="xs:string"/>
<xs:element minOccurs="0" name="totalTag" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertsResponse" type="tns:queryCertsResponse"/>
<xs:complexType name="queryCertsResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:queryCertResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadDeltaCRL" type="tns:downloadDeltaCRL"/>
<xs:complexType name="downloadDeltaCRL">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadDeltaCRLResponse" type="tns:downloadDeltaCRLResponse"/>
<xs:complexType name="downloadDeltaCRLResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="getCertChainByAccount" type="tns:getCertChainByAccount"/>
<xs:complexType name="getCertChainByAccount">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="getCertChainByAccountResponse" type="tns:getCertChainByAccountResponse"/>
<xs:complexType name="getCertChainByAccountResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadCRL" type="tns:downloadCRL"/>
<xs:complexType name="downloadCRL">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadCRLResponse" type="tns:downloadCRLResponse"/>
<xs:complexType name="downloadCRLResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="enrollCert" type="tns:enrollCert"/>
<xs:complexType name="enrollCert">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="certReqBuf" type="xs:string"/>
<xs:element minOccurs="0" name="certReqChallenge" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="enrollCertResponse" type="tns:enrollCertResponse"/>
<xs:complexType name="enrollCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="syncAccountInfo" type="tns:syncAccountInfo"/>
<xs:complexType name="syncAccountInfo">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="syncAccountInfoResponse" type="tns:syncAccountInfoResponse"/>
<xs:complexType name="syncAccountInfoResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:accountInfo"/>
</xs:sequence>
</xs:complexType>
<xs:element name="renewCertAA" type="tns:renewCertAA"/>
<xs:complexType name="renewCertAA">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="origin" type="tns:certInfo"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="aaCheckPoint" type="xs:string"/>
<xs:element minOccurs="0" name="passCode" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="renewCertAAResponse" type="tns:renewCertAAResponse"/>
<xs:complexType name="renewCertAAResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:certInfo"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadCA" type="tns:downloadCA"/>
<xs:complexType name="downloadCA">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadCAResponse" type="tns:downloadCAResponse"/>
<xs:complexType name="downloadCAResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="doScript" type="tns:doScript"/>
<xs:complexType name="doScript">
xs:sequence
<xs:element minOccurs="0" name="scriptName" type="xs:string"/>
<xs:element minOccurs="0" name="jsonMap" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="doScriptResponse" type="tns:doScriptResponse"/>
<xs:complexType name="doScriptResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="synchroTemplate" type="tns:synchroTemplate"/>
<xs:complexType name="synchroTemplate">
xs:sequence
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="synchroTemplateResponse" type="tns:synchroTemplateResponse"/>
<xs:complexType name="synchroTemplateResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:accountConfigResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertBySerialNumber" type="tns:queryCertBySerialNumber"/>
<xs:complexType name="queryCertBySerialNumber">
xs:sequence
<xs:element minOccurs="0" name="serialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertBySerialNumberResponse" type="tns:queryCertBySerialNumberResponse"/>
<xs:complexType name="queryCertBySerialNumberResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:queryCertResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="pickupCert" type="tns:pickupCert"/>
<xs:complexType name="pickupCert">
xs:sequence
<xs:element minOccurs="0" name="certPin" type="xs:string"/>
<xs:element minOccurs="0" name="certReqChallenge" type="xs:string"/>
<xs:element minOccurs="0" name="certReqBuf" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="pickupCertResponse" type="tns:pickupCertResponse"/>
<xs:complexType name="pickupCertResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:certInfo"/>
</xs:sequence>
</xs:complexType>
<xs:element name="revokeCert" type="tns:revokeCert"/>
<xs:complexType name="revokeCert">
xs:sequence
<xs:element minOccurs="0" name="serialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="certReqChallenge" type="xs:string"/>
<xs:element minOccurs="0" name="certRevokeReason" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="revokeCertResponse" type="tns:revokeCertResponse"/>
<xs:complexType name="revokeCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="renewCert" type="tns:renewCert"/>
<xs:complexType name="renewCert">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="origin" type="tns:certInfo"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="renewCertResponse" type="tns:renewCertResponse"/>
<xs:complexType name="renewCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="queryCertByCertId2" type="tns:queryCertByCertId2"/>
<xs:complexType name="queryCertByCertId2">
xs:sequence
<xs:element name="certId" type="xs:long"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="queryCertByCertId2Response" type="tns:queryCertByCertId2Response"/>
<xs:complexType name="queryCertByCertId2Response">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:queryCertResult"/>
</xs:sequence>
</xs:complexType>
<xs:element name="suspendCert" type="tns:suspendCert"/>
<xs:complexType name="suspendCert">
xs:sequence
<xs:element minOccurs="0" name="serialNumber" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="suspendCertResponse" type="tns:suspendCertResponse"/>
<xs:complexType name="suspendCertResponse">
xs:sequence/
</xs:complexType>
<xs:element name="enrollCertAA" type="tns:enrollCertAA"/>
<xs:complexType name="enrollCertAA">
xs:sequence
<xs:element minOccurs="0" name="userInfo" type="tns:userInfo"/>
<xs:element minOccurs="0" name="certReqBuf" type="xs:string"/>
<xs:element minOccurs="0" name="accountHash" type="xs:string"/>
<xs:element minOccurs="0" name="aaCheckPoint" type="xs:string"/>
<xs:element minOccurs="0" name="passCode" type="xs:string"/>
<xs:element minOccurs="0" name="json" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="enrollCertAAResponse" type="tns:enrollCertAAResponse"/>
<xs:complexType name="enrollCertAAResponse">
xs:sequence
<xs:element minOccurs="0" name="return" type="tns:certInfo"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="enrollCertAA">
<wsdl:part element="tns:enrollCertAA" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertsResponse">
<wsdl:part element="tns:queryCertsResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCertChainByAccount">
<wsdl:part element="tns:getCertChainByAccount" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="doScriptResponse">
<wsdl:part element="tns:doScriptResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="renewCertAAResponse">
<wsdl:part element="tns:renewCertAAResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadDeltaCRL">
<wsdl:part element="tns:downloadDeltaCRL" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="syncAccountInfo">
<wsdl:part element="tns:syncAccountInfo" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertBySerialNumberResponse">
<wsdl:part element="tns:queryCertBySerialNumberResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadCRLResponse">
<wsdl:part element="tns:downloadCRLResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="RaServiceUnavailable">
<wsdl:part element="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:part>
</wsdl:message>
<wsdl:message name="suspendCertResponse">
<wsdl:part element="tns:suspendCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadDeltaCRLResponse">
<wsdl:part element="tns:downloadDeltaCRLResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="revokeCertResponse">
<wsdl:part element="tns:revokeCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertBySerialNumber">
<wsdl:part element="tns:queryCertBySerialNumber" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="doScript">
<wsdl:part element="tns:doScript" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="pickupCertResponse">
<wsdl:part element="tns:pickupCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="enrollCertResponse">
<wsdl:part element="tns:enrollCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="unsuspendCertResponse">
<wsdl:part element="tns:unsuspendCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertByCertId2Response">
<wsdl:part element="tns:queryCertByCertId2Response" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="enrollCert">
<wsdl:part element="tns:enrollCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="enrollCertAAResponse">
<wsdl:part element="tns:enrollCertAAResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertByCertId2">
<wsdl:part element="tns:queryCertByCertId2" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCertChainByAccountResponse">
<wsdl:part element="tns:getCertChainByAccountResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadCAResponse">
<wsdl:part element="tns:downloadCAResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadCA">
<wsdl:part element="tns:downloadCA" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCerts">
<wsdl:part element="tns:queryCerts" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertByCertId">
<wsdl:part element="tns:queryCertByCertId" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="synchroTemplate">
<wsdl:part element="tns:synchroTemplate" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="revokeCert">
<wsdl:part element="tns:revokeCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="synchroTemplateResponse">
<wsdl:part element="tns:synchroTemplateResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="renewCertResponse">
<wsdl:part element="tns:renewCertResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="renewCertAA">
<wsdl:part element="tns:renewCertAA" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="unsuspendCert">
<wsdl:part element="tns:unsuspendCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="pickupCert">
<wsdl:part element="tns:pickupCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="syncAccountInfoResponse">
<wsdl:part element="tns:syncAccountInfoResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="suspendCert">
<wsdl:part element="tns:suspendCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="renewCert">
<wsdl:part element="tns:renewCert" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadCRL">
<wsdl:part element="tns:downloadCRL" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="queryCertByCertIdResponse">
<wsdl:part element="tns:queryCertByCertIdResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="UserAPIServicePortType">
<wsdl:operation name="queryCertByCertId">
<wsdl:input message="tns:queryCertByCertId" name="queryCertByCertId">
</wsdl:input>
<wsdl:output message="tns:queryCertByCertIdResponse" name="queryCertByCertIdResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unsuspendCert">
<wsdl:input message="tns:unsuspendCert" name="unsuspendCert">
</wsdl:input>
<wsdl:output message="tns:unsuspendCertResponse" name="unsuspendCertResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="queryCerts">
<wsdl:input message="tns:queryCerts" name="queryCerts">
</wsdl:input>
<wsdl:output message="tns:queryCertsResponse" name="queryCertsResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="downloadDeltaCRL">
<wsdl:input message="tns:downloadDeltaCRL" name="downloadDeltaCRL">
</wsdl:input>
<wsdl:output message="tns:downloadDeltaCRLResponse" name="downloadDeltaCRLResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCertChainByAccount">
<wsdl:input message="tns:getCertChainByAccount" name="getCertChainByAccount">
</wsdl:input>
<wsdl:output message="tns:getCertChainByAccountResponse" name="getCertChainByAccountResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="downloadCRL">
<wsdl:input message="tns:downloadCRL" name="downloadCRL">
</wsdl:input>
<wsdl:output message="tns:downloadCRLResponse" name="downloadCRLResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="enrollCert">
<wsdl:input message="tns:enrollCert" name="enrollCert">
</wsdl:input>
<wsdl:output message="tns:enrollCertResponse" name="enrollCertResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="syncAccountInfo">
<wsdl:input message="tns:syncAccountInfo" name="syncAccountInfo">
</wsdl:input>
<wsdl:output message="tns:syncAccountInfoResponse" name="syncAccountInfoResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="renewCertAA">
<wsdl:input message="tns:renewCertAA" name="renewCertAA">
</wsdl:input>
<wsdl:output message="tns:renewCertAAResponse" name="renewCertAAResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="downloadCA">
<wsdl:input message="tns:downloadCA" name="downloadCA">
</wsdl:input>
<wsdl:output message="tns:downloadCAResponse" name="downloadCAResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="doScript">
<wsdl:input message="tns:doScript" name="doScript">
</wsdl:input>
<wsdl:output message="tns:doScriptResponse" name="doScriptResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="synchroTemplate">
<wsdl:input message="tns:synchroTemplate" name="synchroTemplate">
</wsdl:input>
<wsdl:output message="tns:synchroTemplateResponse" name="synchroTemplateResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="queryCertBySerialNumber">
<wsdl:input message="tns:queryCertBySerialNumber" name="queryCertBySerialNumber">
</wsdl:input>
<wsdl:output message="tns:queryCertBySerialNumberResponse" name="queryCertBySerialNumberResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="pickupCert">
<wsdl:input message="tns:pickupCert" name="pickupCert">
</wsdl:input>
<wsdl:output message="tns:pickupCertResponse" name="pickupCertResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="revokeCert">
<wsdl:input message="tns:revokeCert" name="revokeCert">
</wsdl:input>
<wsdl:output message="tns:revokeCertResponse" name="revokeCertResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="renewCert">
<wsdl:input message="tns:renewCert" name="renewCert">
</wsdl:input>
<wsdl:output message="tns:renewCertResponse" name="renewCertResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="queryCertByCertId2">
<wsdl:input message="tns:queryCertByCertId2" name="queryCertByCertId2">
</wsdl:input>
<wsdl:output message="tns:queryCertByCertId2Response" name="queryCertByCertId2Response">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="suspendCert">
<wsdl:input message="tns:suspendCert" name="suspendCert">
</wsdl:input>
<wsdl:output message="tns:suspendCertResponse" name="suspendCertResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="enrollCertAA">
<wsdl:input message="tns:enrollCertAA" name="enrollCertAA">
</wsdl:input>
<wsdl:output message="tns:enrollCertAAResponse" name="enrollCertAAResponse">
</wsdl:output>
<wsdl:fault message="tns:RaServiceUnavailable" name="RaServiceUnavailable">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="UserAPIServiceSoapBinding" type="tns:UserAPIServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="queryCertByCertId">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="queryCertByCertId">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="queryCertByCertIdResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unsuspendCert">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="unsuspendCert">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="unsuspendCertResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="queryCerts">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="queryCerts">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="queryCertsResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="downloadDeltaCRL">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="downloadDeltaCRL">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="downloadDeltaCRLResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCertChainByAccount">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="getCertChainByAccount">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getCertChainByAccountResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="downloadCRL">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="downloadCRL">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="downloadCRLResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="enrollCert">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="enrollCert">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="enrollCertResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="syncAccountInfo">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="syncAccountInfo">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="syncAccountInfoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="renewCertAA">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="renewCertAA">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="renewCertAAResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="downloadCA">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="downloadCA">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="downloadCAResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="doScript">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="doScript">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="doScriptResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="pickupCert">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="pickupCert">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="pickupCertResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="queryCertBySerialNumber">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="queryCertBySerialNumber">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="queryCertBySerialNumberResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="synchroTemplate">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="synchroTemplate">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="synchroTemplateResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="queryCertByCertId2">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="queryCertByCertId2">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="queryCertByCertId2Response">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="renewCert">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="renewCert">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="renewCertResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="revokeCert">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="revokeCert">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="revokeCertResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="suspendCert">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="suspendCert">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="suspendCertResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="enrollCertAA">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="enrollCertAA">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="enrollCertAAResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="RaServiceUnavailable">
<soap:fault name="RaServiceUnavailable" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="UserAPIService">
<wsdl:port binding="tns:UserAPIServiceSoapBinding" name="UserAPIServicePort">
<soap:address location="http://sm2ssl-loadtest.itrus.com.cn/services/userAPI"/>
</wsdl:port>
</wsdl:service>

@jack-yli
Copy link

tengine access_log & dubug error_log
error

2023/08/22 09:25:33 [notice] 11298#0: 371440 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:25:33 [notice] 11298#0: 371440 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:25:33 [notice] 11298#0: 371440 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:25:34 [info] 11298#0: 371440 client ..86.115 closed keepalive connection
2023/08/22 09:25:48 [notice] 11299#0: 371442 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:25:48 [notice] 11299#0: 371442 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:25:48 [notice] 11299#0: 371442 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:25:50 [error] 11299#0: 371442 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:25:50 [info] 11299#0: 371442 client ..86.115 closed keepalive connection
2023/08/22 09:25:52 [notice] 11294#0: 371445 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:25:52 [notice] 11294#0: 371445 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:25:52 [notice] 11294#0: 371445 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:25:54 [error] 11294#0: 371445 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:25:56 [error] 11294#0: 371445 upstream timed out (110: Connection timed out) while reading response header from upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:25:56 [info] 11294#0: 371445 client ..86.115 closed keepalive connection
2023/08/22 09:25:58 [notice] 11301#0: 371448 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:25:58 [notice] 11301#0: 371448 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:25:58 [notice] 11301#0: 371448 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:26:00 [error] 11301#0: 371448 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:26:00 [info] 11301#0: 371448 client ..86.115 closed keepalive connection
2023/08/22 09:26:08 [notice] 11298#0: 371451 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:26:08 [notice] 11298#0: 371451 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:26:08 [notice] 11298#0: 371451 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:26:10 [error] 11298#0: 371451 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:26:10 [info] 11298#0: 371451 client ..86.115 closed keepalive connection
2023/08/22 09:27:35 [notice] 11300#0: 371454 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:35 [notice] 11300#0: 371454 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:27:35 [notice] 11300#0: 371454 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:37 [error] 11300#0: 371454 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:27:39 [error] 11300#0: 371454 upstream timed out (110: Connection timed out) while reading response header from upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:27:39 [info] 11300#0: 371454 client ..86.115 closed keepalive connection
2023/08/22 09:27:40 [notice] 11298#0: 371457 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:40 [notice] 11298#0: 371457 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:27:40 [notice] 11298#0: 371457 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:41 [info] 11298#0: 371457 client ..86.115 closed keepalive connection
2023/08/22 09:27:42 [notice] 11301#0: 371459 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:42 [notice] 11301#0: 371459 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:27:42 [notice] 11301#0: 371459 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:43 [info] 11301#0: 371459 client ..86.115 closed keepalive connection
2023/08/22 09:27:45 [notice] 11298#0: 371461 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:45 [notice] 11298#0: 371461 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:27:45 [notice] 11298#0: 371461 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:47 [error] 11298#0: 371461 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:27:49 [info] 11298#0: 371461 client ..86.115 closed keepalive connection
2023/08/22 09:27:50 [notice] 11298#0: 371464 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:50 [notice] 11298#0: 371464 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:50 [notice] 11298#0: 371464 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:27:51 [info] 11298#0: 371464 client ..86.115 closed keepalive connection
2023/08/22 09:27:52 [notice] 11298#0: 371466 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:52 [notice] 11298#0: 371466 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:52 [notice] 11298#0: 371466 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:27:54 [error] 11298#0: 371466 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:27:56 [info] 11298#0: 371466 client ..86.115 closed keepalive connection
2023/08/22 09:27:57 [notice] 11298#0: 371469 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:57 [notice] 11298#0: 371469 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:27:57 [notice] 11298#0: 371469 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:57 [info] 11298#0: 371469 client ..86.115 closed keepalive connection
2023/08/22 09:27:59 [notice] 11298#0: 371471 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:27:59 [notice] 11298#0: 371471 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:27:59 [notice] 11298#0: 371471 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:01 [error] 11298#0: 371471 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:01 [info] 11298#0: 371471 client ..86.115 closed keepalive connection
2023/08/22 09:28:02 [notice] 11294#0: 371474 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:02 [notice] 11294#0: 371474 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:02 [notice] 11294#0: 371474 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:03 [info] 11294#0: 371474 client ..86.115 closed keepalive connection
2023/08/22 09:28:04 [info] 11298#0: 371476 client sent invalid method while reading client request line, client: 65.49.1.69, server: topra-demo.itrus.com.cn, request: "��� {� w��崡雅i2??�R�5��€?勩?衟衇搤?? �????????
2023/08/22 09:28:04 [notice] 11294#0: 371477 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:04 [notice] 11294#0: 371477 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:04 [notice] 11294#0: 371477 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:06 [info] 11294#0: 371477 client ..86.115 closed keepalive connection
2023/08/22 09:28:11 [notice] 11298#0: 371479 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:11 [notice] 11298#0: 371479 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:11 [notice] 11298#0: 371479 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:11 [info] 11298#0: 371479 client ..86.115 closed keepalive connection
2023/08/22 09:28:15 [notice] 11298#0: 371481 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:15 [notice] 11298#0: 371481 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:15 [notice] 11298#0: 371481 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:17 [error] 11298#0: 371481 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:19 [error] 11298#0: 371481 upstream timed out (110: Connection timed out) while reading response header from upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:19 [info] 11298#0: 371481 client ..86.115 closed keepalive connection
2023/08/22 09:28:21 [notice] 11298#0: 371484 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:21 [notice] 11298#0: 371484 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:21 [notice] 11298#0: 371484 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:24 [info] 11298#0: 371484 client ..86.115 closed keepalive connection
2023/08/22 09:28:25 [notice] 11298#0: 371486 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:25 [notice] 11298#0: 371486 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:25 [notice] 11298#0: 371486 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:26 [info] 11298#0: 371486 client ..86.115 closed keepalive connection
2023/08/22 09:28:30 [notice] 11298#0: 371488 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:30 [notice] 11298#0: 371488 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:30 [notice] 11298#0: 371488 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:32 [error] 11298#0: 371488 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:35 [info] 11298#0: 371488 client ..86.115 closed keepalive connection
2023/08/22 09:28:37 [notice] 11299#0: 371491 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:37 [notice] 11299#0: 371491 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:37 [notice] 11299#0: 371491 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:40 [error] 11299#0: 371491 upstream timed out (110: Connection timed out) while reading response header from upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:42 [error] 11299#0: 371491 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:42 [info] 11299#0: 371491 client ..86.115 closed keepalive connection
2023/08/22 09:28:43 [notice] 11298#0: 371494 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:43 [notice] 11298#0: 371494 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:43 [notice] 11298#0: 371494 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:44 [info] 11298#0: 371494 client ..86.115 closed keepalive connection
2023/08/22 09:28:46 [notice] 11298#0: 371496 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:46 [notice] 11298#0: 371496 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:46 [notice] 11298#0: 371496 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:48 [error] 11298#0: 371496 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:50 [error] 11298#0: 371496 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:50 [info] 11298#0: 371496 client ..86.115 closed keepalive connection
2023/08/22 09:28:51 [notice] 11299#0: 371499 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:51 [notice] 11299#0: 371499 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:51 [notice] 11299#0: 371499 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:54 [error] 11299#0: 371499 upstream timed out (110: Connection timed out) while reading response header from upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:28:54 [info] 11299#0: 371499 client ..86.115 closed keepalive connection
2023/08/22 09:28:56 [notice] 11299#0: 371501 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:56 [notice] 11299#0: 371501 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:28:56 [notice] 11299#0: 371501 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:28:58 [error] 11299#0: 371501 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:29:01 [error] 11299#0: 371501 upstream timed out (110: Connection timed out) while reading upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:29:02 [notice] 11299#0: 371504 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:29:02 [notice] 11299#0: 371504 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:02 [notice] 11299#0: 371504 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:29:03 [info] 11299#0: 371504 client ..86.115 closed keepalive connection
2023/08/22 09:29:05 [notice] 11298#0: 371506 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:05 [notice] 11298#0: 371506 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:05 [notice] 11298#0: 371506 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:29:07 [info] 11298#0: 371506 client ..86.115 closed keepalive connection
2023/08/22 09:29:10 [notice] 11300#0: 371508 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:10 [notice] 11300#0: 371508 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:10 [notice] 11300#0: 371508 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:29:10 [info] 11300#0: 371508 client ..86.115 closed keepalive connection
2023/08/22 09:29:13 [notice] 11298#0: 371510 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:13 [notice] 11298#0: 371510 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:13 [notice] 11298#0: 371510 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:29:15 [error] 11298#0: 371510 upstream timed out (110: Connection timed out) while reading response header from upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:29:17 [error] 11298#0: 371510 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:29:17 [info] 11298#0: 371510 client ..86.115 closed keepalive connection
2023/08/22 09:29:19 [notice] 11298#0: 371513 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:19 [notice] 11298#0: 371513 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:29:19 [notice] 11298#0: 371513 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: "..54.34:9999"
2023/08/22 09:29:21 [error] 11298#0: 371513 upstream timed out (110: Connection timed out) while connecting to upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://.
.173.128:81/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:29:24 [error] 11298#0: 371513 upstream timed out (110: Connection timed out) while reading upstream, client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", upstream: "http://..173.128:80/services/userAPI?wsdl", host: "..54.34:9999"
2023/08/22 09:29:54 [info] 11299#0: 371516 client sent invalid method while reading client request line, client: 47.92.71.160, server: newca-demo.itrus.com.cn, request: "������ ?�"�擗钪娞旅j敒Q杦T?`靠XD鹺I?�, V???? ???⒗$??? k j g @?????????
2023/08/22 09:29:54 [info] 11300#0: 371517 client sent invalid method while reading client request line, client: 47.92.73.109, server: testra-demo.itrus.com.cn, request: "������ ?�9 ??�WN緃×!��Y兿x?奠?
2023/08/22 09:33:43 [notice] 11298#0: 371518 "^/enterprise" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:33:43 [notice] 11298#0: 371518 "^/enterprise/enrollAdminCert" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".
.54.34:9999"
2023/08/22 09:33:43 [notice] 11298#0: 371518 "^/$" does not match "/services/userAPI", client: ..86.115, server: testra-demo.itrus.com.cn, request: "GET /services/userAPI?wsdl HTTP/1.1", host: ".*.54.34:9999"
2023/08/22 09:33:43 [info] 11298#0: *371518 client ..86.115 closed keepalive connection

@jack-yli
Copy link

The current problem seems to be that Tengine (nginx) is processing the data returned by Upstream, HTTP_ Due to network reasons, the body data was not fully received, but the status record value still returned 200 instead of 5xx. It is not confirmed whether it is related to the soap protocol used by the application, and similar situations have not been encountered in other HTTP requests.

@lianglli
Copy link
Member

lianglli commented Aug 24, 2023

What is the proxy buffer setting for your tengine specifically?

@sunshuxin
Copy link
Author

sunshuxin commented Aug 24, 2023

Hello, the parameter settings in the configuration file are shown in the screenshot. Please check if there are any setting parameters you described, where:
client_header_buffer_size 2k
large_client_header_buffers 4k
client_max_body_size 8m
image
image
image

@lianglli
Copy link
Member

Check your 'proxy_buffering' on nginx1 and CA-nginx

@sunshuxin
Copy link
Author

sunshuxin commented Aug 24, 2023

Hello, proxy is not set in nginx1_ Buffering parameter settings, CA nginx, please wait here to check the configuration file
As shown in the screenshot above, there is no defined proxy for nginx1 configuration_ Buffering parameter

@sunshuxin
Copy link
Author

sunshuxin commented Aug 24, 2023

Hello, We have checked that there is no definition of proxy in the CA nginx configuration file_ Parameter settings for buffering.

@sunshuxin
Copy link
Author

Hello, are there any other directions for investigation or possible solutions to avoid? Looking forward to your reply

@drawing
Copy link
Collaborator

drawing commented Aug 28, 2023

I reproduce this scenario with a small configuration:

worker_processes  1;
error_log  logs/error.log debug;

events {
    worker_connections  1024;
}

stream {
    server {
        listen 2888;
        content_by_lua_block {
            ngx.say("HTTP/1.1 200 OK\r\nServer: Tengine\r\nContent-Length: 7777\r\nConnection: keep-alive\r\nkeep-alive: 60\r\n\r\n");
        }
    }
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr|$status|$remote_user|$time_local|$request|$status|$body_bytes_sent|$upstream_addr|$upstream_status|';

    access_log  logs/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    proxy_http_version 1.1;

    proxy_intercept_errors on;
    proxy_next_upstream error http_500 http_502 http_503 http_504;

    server {
        listen       8080;

        server_name  localhost;
        proxy_buffering on;
        location / {
            proxy_pass http://127.0.0.1:2888;
        }
    }
}

When the curl -v 127.0.0.1:8080 command is executed, the log status is 200 but the curl prompt fails.

The reason is that when the upstream gets the header, it is sent to the client immediately, and the status is set to 200 at the same time. When the reading of the body fails, call ngx_http_upstream_finalize_request to pass in a 502 error, but the header has been sent, the status will not be set, only data flush will be performed.

    if (!u->header_sent
        || rc == NGX_HTTP_REQUEST_TIME_OUT
        || rc == NGX_HTTP_CLIENT_CLOSED_REQUEST)
    {
        ngx_http_finalize_request(r, rc);
        return;
    }

    flush = 0;

    if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
        rc = NGX_ERROR;
        flush = 1;
    }

    ...

    if (rc == 0) {

        if (ngx_http_upstream_process_trailers(r, u) != NGX_OK) {
            ngx_http_finalize_request(r, NGX_ERROR);
            return;
        }

        rc = ngx_http_send_special(r, NGX_HTTP_LAST);

    } else if (flush) {
        r->keepalive = 0;
        rc = ngx_http_send_special(r, NGX_HTTP_FLUSH);
    }

I tested nginx is the same behavior. And I didn't find a way to set the status without modifying the code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants