Giter VIP home page Giter VIP logo

csb-sdk's Introduction

CSB-SDK README

Introduction

The CSB-SDK is a client-side invocation SDK for HTTP or Web Service API opened by the CSB (Cloud Service Bus) product. It is responsible for invoking the open API and signing the request information.

Content in the CSB-SDK

  • common Base classes used by both HTTP-SDK and WS-SDK
  • http-client The client SDK for invoking HTTP API details
  • ws-client The client SDK for binding security params into WebService client dispatch or port details
  • samples Unit Tests for using above SDKs details
  • others HTTP-SDK for other Languages' implementation, e.g. PHP, Go and Node.js

Build from source code

# 1. download sourcefrom Github (once time only)
git clone https://github.com/aliyun/csb-sdk.git
cd csb-sdk
     

# 2. show and switch to desired branch, e.g.
git branch
git checkout 1.1.5.

# 3. Build common module
cd common
mvn clean install 

# 4. Build http SDK
cd ../http-client

# 4.1 install as maven dependency to local repository
mvn clean install  -Dmaven.test.skip

# 4.2 build as a standalone jar
bash gen-standaloneJar.sh

# 5. Build WS SDK
cd ../ws-client

# 5.1 install as maven dependency to local repository
mvn clean install  -Dmaven.test.skip

# 5.2 build as a standalone jar
bash gen-standaloneJar.sh

Use the SDK as dependency in your pom.xml

  1. Directly use the maven dependency from maven central repository. Use release dependency in your pom.xml
  <!--To use HTTP-SDK-->
  <dependency>
     <groupId>com.alibaba.csb.sdk</groupId>
     <artifactId>http-client</artifactId>
     <version>${http.sdk.version}</version>
  </dependency>

  <!--To use WS-SDK-->
  <dependency>
     <groupId>com.alibaba.csb.sdk</groupId>
     <artifactId>ws-client</artifactId>
     <version>${ws.sdk.version}</version>
  </dependency>

Note: Please check latest release version from here

  1. Use snapshot dependency in your pom.xml
  <!--To use HTTP-SDK-->
  <dependency>
     <groupId>com.alibaba.csb.sdk</groupId>
     <artifactId>http-client</artifactId>
     <version>${http.sdk.snapshot.version}</version>
  </dependency>

  <!--To use WS-SDK-->
  <dependency>
     <groupId>com.alibaba.csb.sdk</groupId>
     <artifactId>ws-client</artifactId>
     <version>${ws.sdk.snapshot.version}</version>
  </dependency>
     
     
  <repositories>
    ...
      
    <!--define snapshot repository for SDK releases-->   
    <repository>
      <id>csb-sdk-snapshots</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

Note: Please check latest snapshot version from here

Other-Languages support (beta version!!!)

  1. PHP based HTTP-SDK A http-sdk implementation by PHP script details

  2. Go based HTTP-SDK A http-sdk implementation by Go script details

  3. node.js based HTTP-SDK A http-sdk implementation by Node.js details

  4. .net based HTTP-SDK A http-sdk implementation by .net details

Future Work

  • Support more Aliyun base service
  • Support more friendly code migration.

License

Licensed under the Apache License 2.0

csb-sdk's People

Contributors

wenhong-fz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

csb-sdk's Issues

How to fix [517]json2hsf process error

您好,请问如何解决 [517]json2hsf process error 错误?

以下是我的伪代码:

const {CONTENT_TYPE_JSON, Client} = require('aliware-csb')

const client = new Client()

async function fn() {
    try {
        const url = 'httpURL'
        var responseHeaders = {}

        var result = await client.post(  
            url,
            {
                api:"api_name", 
                version: "1.0.0",
                accessKey: 'ak',
                secretKey: 'sk',
                headers: {   
                    'content-type': CONTENT_TYPE_JSON
                },
                query: {},
                data: {
                    leadWithCarCodeDto: { name: '测试先生999', cellPhone1: '13162539999' },
                    leadSource: { behavior: 'keep_in_touch' },
                    leadType: 0
                }
            },
            responseHeaders  
        );
    
        console.log(result)
    } catch (error) {
        console.error('error: ', error)
    }
}

fn()

错误信息:

{
   "code":500,
  "message":"[517]json2hsf process error, json to hsf invoke error-param is necessary,but not found 
   from you params,paramTypeName is : com.dtdream.dop.lead.dto.LeadWithCarCodeDto, param 
   name is : leadWithCarCodeDto",
  "requestId":"ID-izbp120gz8zjya2hihouzlz-46564-1529585767806-2-393332299"
}

我在data中已传了leadWithCarCodeDto的信息, 貌似不能被正确读取。望请回复,万分感谢!!!

HTTP-Client Error: post a request url with " character

Exception in thread "main" java.lang.IllegalArgumentException: Illegal character in query at index 404: http://210.76.72.141:8086/service?ProcessType=webservice.CallWebService&ServerAppID=center_2/server&MenuID=dixianminsheng_to_xml&Locator=DataProcess&ServiceType=DataProcess__sxxzx_zhongxin_dixianminsheng&ServiceID=zhongxin_dixianminsheng_T29014_14AB010&User=dxmsQuery&PWD=9A21210789859D3F0A5C6031DF1B372C&ResultType=ResponseXML&ResponseNo=1&DWID=sxxzx&SecPwd=true&VarID=IdCard&VarValue=F29014_14AB010007="411121196410035030"
at java.net.URI.create(URI.java:859)
at org.apache.http.client.methods.HttpPost.(HttpPost.java:76)
at com.alibaba.csb.sdk.internel.HttpClientHelper.createPost(HttpClientHelper.java:264)
at com.alibaba.csb.sdk.HttpCaller.doPost(HttpCaller.java:865)
at com.alibaba.csb.sdk.HttpCaller.doPost(HttpCaller.java:827)
at com.alibaba.csb.sdk.HttpCaller.doPost(HttpCaller.java:1013)
at test.Demo02.main(Demo02.java:21)
Caused by: java.net.URISyntaxException: Illegal character in query at index 404: http://210.76.72.141:8086/service?ProcessType=webservice.CallWebService&ServerAppID=center_2/server&MenuID=dixianminsheng_to_xml&Locator=DataProcess&ServiceType=DataProcess__sxxzx_zhongxin_dixianminsheng&ServiceID=zhongxin_dixianminsheng_T29014_14AB010&User=dxmsQuery&PWD=9A21210789859D3F0A5C6031DF1B372C&ResultType=ResponseXML&ResponseNo=1&DWID=sxxzx&SecPwd=true&VarID=IdCard&VarValue=F29014_14AB010007="411121196410035030"
at java.net.URI$Parser.fail(URI.java:2829)
at java.net.URI$Parser.checkChars(URI.java:3002)
at java.net.URI$Parser.parseHierarchical(URI.java:3092)
at java.net.URI$Parser.parse(URI.java:3034)
at java.net.URI.(URI.java:595)
at java.net.URI.create(URI.java:857)
... 6 more

The HttpPost can not process the request url when it has a parameter like this VarValue=F29014_14AB010007="411121196410035030"

[HTTP-Client] Need to check request params map empty value, raise exception if found

一、现象描述:
代扣交易调用CSB服务,组装HttpParameters.Builder对象的参数map,某些条件下必输的字段(即有的商户上送,有的不上送),如果不上送,我们组装HashMap时值为null,调用Builder对象的putParamsMapAll方法,则CSB报500错误。具体错误信息如下:
2017-10-25 16:31:08 INFO -=============================TradeService.withhold send csb end, result:

<title>Error 500 Server Error</title>

HTTP ERROR: 500

Problem accessing /. Reason:

    Server Error


Powered by Jetty://

Map<String, String> params = new HashMap<String, String>();
params.put("city","Test");
params.put("citycode","1");
params.put("cityid","1");
params.put("ip",null); // this is the problematic line, set the value with null.
params.put("location","1");

HttpParameters.Builder builder = HttpParameters.newBuilder();
builder.putParamsMapAll(params);
...

如果要设置HTTP HEADER里的值是中文怎么办?

我的客户端代码里设置http header的值为中文的时候,如取值为: "姓名" 会报如下的错误:

HttpResponseProxy{HTTP/1.1 400 Bad Request [Connection: close, Server: Jetty(8.1.17.v20150415)] ResponseEntityProxy{[Chunked: false]}}

解释:
发现header中只能传输英文,如果需要传输中文,发放方需要使用URLEncoder.encode(“我是汉字”,"UTF-8") 进行编码,接收方需要使用URLDecoder.decode("待解析字符串", "UTF-8")进行解码!

客户端代码实例:

	@Test
	public void testHeader() {
		try {
			HttpParameters.Builder hp = HttpParameters.newBuilder();
			hp.api("lt-http2http2").requestURL("http://localhost:8086/CSB");
			hp.version("1.0.0");
			//hp.method("post");
			hp.putParamsMap("arg0", "abc");
			hp.putParamsMap("pv", "10");

			//将Header里的值进行中文urlEncode
			hp.putHeaderParamsMap("test", URLEncoder.encode("姓名","UTF-8"));
			String ret = HttpCaller.invoke(hp.build());
			System.out.println("res = "+ ret);

		}catch(Exception e) {
			e.printStackTrace(System.out);
		}
	}

Request Entity Too Large .

您好, 我在使用CSB服务的时候遇到了这样的问题, 就是提示request entity too large. 这样的应该怎么处理呢?

golang-sdk invoke

  • others/golang/csbhttp/httpcaller.go
    if params.ct.jsonBody != "" { _, err = json.Marshal(params.ct.jsonBody) if err == nil { return str, rtnHeaders, &HttpCallerException{Message : "failed to bad content type json string", CauseErr : err} } reqStr = params.ct.jsonBody defaultContentType = params.ct.contentType; reqUrl = appendParams(reqUrl, data.Encode()) }
    这里的目标是判断是否是正确的json字符串吗?是否应该使用unmarshal和err != nil来进行快速失败

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.