- import com.microsoft.aad.adal4j.AuthenticationResult;
- import com.microsoft.aad.adal4j.AuthenticationContext;
- import io.vertx.core.json.JsonObject;
- import netscape.javascript.JSObject;
-
-
- import org.apache.http.HttpResponse;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.entity.StringEntity;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.protocol.HTTP;
- import org.apache.http.util.EntityUtils;
- import org.apache.olingo.client.api.ODataClient;
- import org.apache.olingo.client.api.ODataClientBuilder;
- import org.apache.olingo.client.api.domain.ClientEntity;
- import org.apache.olingo.client.api.domain.ClientEntitySet;
- import org.apache.olingo.client.api.domain.ClientProperty;
- import org.apache.olingo.client.core.ODataClientFactory;
- import org.apache.olingo.client.core.http.HttpPatch;
- import org.apache.olingo.commons.api.format.ContentType;
- import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext;
- import org.springframework.security.oauth2.client.OAuth2ClientContext;
- import org.springframework.security.oauth2.client.OAuth2RestTemplate;
- import org.springframework.security.oauth2.client.token.AccessTokenRequest;
- import org.springframework.security.oauth2.client.token.DefaultAccessTokenRequest;
- import org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordResourceDetails;
- import org.springframework.security.oauth2.common.OAuth2AccessToken;
-
- import java.io.*;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLEncoder;
- import java.nio.charset.StandardCharsets;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.*;
- import java.util.zip.GZIPInputStream;
-
-
- public class demo {
-
- private HttpURLConnection urlConnection =null;
- public demo()
- {
-
- }
- public static void main(String[] args) throws Exception {
- System.out.println("Hello World!");
-
- String _token = GetDynamics365Token();// getToken().getAccessToken().toString();
-
- System.out.println(_token);
-
- //String ret = GetAccount(_token);
- // testcreateContact(_token);
- // testGetContact(_token);
- testupdateContact(_token);
- }
- private static void testupdateContact(String _token)
- {
- String api = APIUrl+"procontacts"+"(1948d283-a404-ec11-b6e6-000d3aa2e3d2)";
-
-
- JsonObject json = new JsonObject();
- json.put("name","tested by JAVA API(Data patch)");
- json.put("phone","18824158458_patch");
- json.put("email","7874108@qq.com_patch");
- json.put("fullname","fullname test of java call api");
- json.put("contactid@odata.bind","/contacts(40a42e1b-9900-ec11-94ef-00224858241d)");
-
-
-
- //String b = HttpUtil.doPostToJson(api,json.toString(),_token,"Patch");
- String b = HttpPatch(api,_token,json);
- if(String.valueOf(b).contains("No-Content"))
- {
- System.out.println("Updated.");
- }
-
- }
- /**
- * patch请求
- *author:fantabulous24
- * @date 2020年7月9日 下午3:24:50
- */
- public static String HttpPatch(String url,String _token,JsonObject json) {
- String resultObj = null;
-
- HttpClient httpClient = new DefaultHttpClient();
- HttpPatch httpPatch = new HttpPatch(url);
- httpPatch.setHeader("Content-type", "application/json");
- httpPatch.setHeader("Charset", HTTP.UTF_8);
- httpPatch.setHeader("Accept", "application/json");
- httpPatch.setHeader("Accept-Charset", HTTP.UTF_8);
- httpPatch.setHeader("Authorization","Bearer "+_token);
- try {
- StringEntity entity=null;
- if(json !=null)
- {
- entity = new StringEntity(json.toString(),StandardCharsets.UTF_8);
- }
- else
- {
- return "";
- }
-
- httpPatch.setEntity(entity);
- HttpResponse response = httpClient.execute(httpPatch);
-
- resultObj = response.toString();
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- return resultObj;
- }
-
- private static void testcreateContact(String _token) throws Exception {
-
- String api = APIUrl+"procontacts";
- JsonObject json = new JsonObject();
- json.put("name","tested by JAVA API");
- json.put("phone","18824158458");
- json.put("email","7874108@qq.com");
-
-
- String a = HttpUtil.doPostToJson(api,json.toString(),_token,"POST");
-
- if(a=="")
- {
- System.out.println("Created!");
- }
-
- }
-
- private static void testGetContact(String token) throws Exception {
- String ret = null;
-
- String queryurl = APIUrl + "procontacts?$select=procontactid,email,phone,name,createdon&$top=3";
-
- ret = HttpUtil.doPostToJson(queryurl,null,token,"GET");
-
- System.out.println(ret);
-
- }
-
- private static String GetAccount(String token) throws Exception {
- String ret =null;
- HttpURLConnection connection =null;
- String queryurl = APIUrl+ "accounts?$select=accountid,accountnumber,createdon,telephone1&$top=3";
- URL url = new URL(queryurl);
-
- connection = buildConnection(url,token,"GET");
-
- int res = connection.getResponseCode();
-
- if(res==200)
- {
-
- ClientEntitySet odataEntitySet = GetConnectionResult(connection);
-
- for (ClientEntity odataEntity: odataEntitySet.getEntities())
- {
- for (ClientProperty curProperty: odataEntity.getProperties())
- {
- String propertyContent = curProperty.getName()+":"+curProperty.getValue().toString();
- ret += propertyContent +"\n";
- System.out.println(propertyContent);
- }
- }
- }
-
- return ret;
- }
-
- private static ClientEntitySet GetConnectionResult(HttpURLConnection conn) throws Exception {
-
- ODataClient client = ODataClientFactory.getClient();
-
- String jsonObject =null;
- if("gzip".equals(conn.getContentEncoding()))
- {
- Reader reader = new InputStreamReader(new GZIPInputStream(conn.getInputStream()));
-
- String jsonRawOutput ="";
- while (true)
- {
- int ch = reader.read();
-
- if(ch==1)
- {
- break;
- }
- jsonRawOutput += (char)ch;
- }
- jsonObject = jsonRawOutput;
- }
- else
- {
- BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
- String jsonoutput ="";
- while (true)
- {
- int ch = in.read();
- if(ch==-1)
- {
- break;
- }
- jsonoutput += (char)ch;
- }
- jsonObject = jsonoutput;
- }
-
- InputStream inputStream = new ByteArrayInputStream(jsonObject.getBytes(StandardCharsets.UTF_8));
-
- return client.getReader().readEntitySet(inputStream, ContentType.APPLICATION_JSON);
- }
-
- private static HttpURLConnection buildConnection( URL _url,String _token,String _RequestMethod ) throws Exception {
-
- if(_RequestMethod.trim()=="")
- {
- return null;
- }
- HttpURLConnection _connect = (HttpURLConnection) _url.openConnection();
- _connect.setRequestMethod(_RequestMethod);
-
- _connect.setRequestProperty("OData-MaxVersion","4.0");
- _connect.setRequestProperty("OData-Version","4.0");
- _connect.setRequestProperty("Accept","application/json");
- _connect.setRequestProperty("Content-Type","application/json");
- _connect.setRequestProperty("Prefer","odata.include-annotations=OData.Community.Display.V1.FormattedValue");
- // _connect.setRequestProperty("Prefer","odata.include-annotations=\\\"Microsoft.Dynamics.CRM.fetchxmlpagingcookie\\");
- _connect.setRequestProperty("Authorization","Bearer "+_token);
- _connect.connect();
-
- return _connect;
-
- }
-
- private static String tokenUrl = "https://login.microsoftonline.com/common/oauth2/token";
- private static String resource = "https://url.crm5.dynamics.com";
- private static String clientId ="xxxxxxx-e055-4f71-b3c0-xxxxxxxf3";
- private static String username = "youraccount of CLOUD.onmicrosoft.com";
- private static String password = "pwd";
- private static String APIUrl = "https://youraddress.crm5.dynamics.com/api/data/v9.0/";
-
- private static AuthenticationResult getToken() {
- AuthenticationResult token = null;
- AuthenticationContext context = null;
- ExecutorService service = null;
- try
-
Java连接Dynamics 365 CRM并请求数据,通过Oauth2.0认证
- 2021-12-15
- Admin
ERP
联系站长
QQ:769220720