以下给出java版本的示例(修改APPKEY后可直接运行体验):
~~~
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Random;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ChatApi {
private static final String AUTH_URL = "https://dev.lingju.ai/serverapi/authorize.do?appkey=%s&userid=%s&authcode=%s&userip=%s";
private static final String CHAT_URL = "https://dev.lingju.ai/serverapi/ljchat.do";
private static String token = "";//获取一次,有效期为30天//
private static final String APIKEY = "62dd9f0c0e606115aede6e28d8684904";//"a776d26cfc67698b319487b78583dbf7";
private static String AUTH_CODE="1b21bb8f726bd93b90da46633a8ad4e1";
public static void getAccessToken(String userid,String userip){
try {
String jsonstring=get(String.format(AUTH_URL, APIKEY,userid,AUTH_CODE,userip));
System.out.println("accessToken_json>>"+jsonstring);
//请开发者使用自己熟悉的json框架解析,如java的:gson,jackson,json-org等。其它平台类似。此处为了不引入第三方jar包,直接用正则提取accessToken
Pattern pt=Pattern.compile("\"accessToken\"\\:\"(\\w+)\"");
Matcher mt=pt.matcher(jsonstring);
if(mt.find()){
token=mt.group(1);
System.out.println("token="+token);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static String get(String url) throws IOException{
System.out.println("get>>"+url);
URL u=new URL(url);
HttpURLConnection conn=(HttpURLConnection) u.openConnection();
conn.setConnectTimeout(10*1000);
conn.setRequestMethod("GET");
try{
InputStream in = conn.getInputStream();
if(conn.getResponseCode()==200){
int l=conn.getContentLength();
byte bytes[]=new byte[l];
in.read(bytes, 0, l);
in.close();
return new String(bytes,"UTF-8");
}
else in.close();
}
catch(Exception e){
e.printStackTrace();
}finally{
conn.disconnect();
}
return null;
}
static String chatJson="{"+
"\"accessToken\":\"%s\","+//必填
"\"userip\":\"%s\","+//必填
"\"input\":\"%s\","+//必填
"\"lat\":\"23.12635\","+//非必填
"\"lng\":\"113.38776\","+//非必填
"\"city\":\"广州\","+//非必填
"\"position\":\"广东广州(非必填)\""+
"}";
public static String getAnswer(String text,String ip) throws IOException{
URL u=new URL(CHAT_URL);
HttpURLConnection conn=(HttpURLConnection) u.openConnection();
conn.setConnectTimeout(10*1000);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
OutputStream out= conn.getOutputStream();
try{
String json=String.format(chatJson, token,,userip,text);
out.write(json.getBytes("UTF-8"));
out.close();
out=null;
InputStream in = conn.getInputStream();
if(conn.getResponseCode()==200){
int l=conn.getContentLength();
byte bytes[]=new byte[l];
in.read(bytes, 0, l);
in.close();
conn.disconnect();
return new String(bytes,"UTF-8");
}
else in.close();
}catch(Exception e){
e.printStackTrace();
}
finally{
if(out!=null){
out.close();
}
conn.disconnect();
}
return null;
}
public static void main(String[] args) throws Exception {
String ip = "127.0.0.1";
getAccessToken("11111111",ip);
Scanner sc=new Scanner(System.in);
String input;
System.out.print("input>>");
while(sc.hasNext()){
input=sc.nextLine();
if("exit".equals(input)){
break;
}
if("test".equals(input)){
for(int i=0;i<20;i++){
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println(getAnswer(new Random().nextInt(100)+"testtesttest"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
else{
System.out.println(getAnswer(input,ip));
}
System.out.print("input>>");
}
sc.close();
//System.out.println(getMusicUrlBy("MUSIC_157093"));
}
}
~~~