ฉันกำลังพยายามสร้าง URI เพื่อดึงข้อมูลบันทึกเดลต้าจาก ServiceNow API ในขณะที่รันโปรแกรมของฉัน ฉันสร้างตัวกรองและเชื่อมต่อตัวกรองเดียวกันกับ uri ดั้งเดิม และโดยใช้วิธี get ของ RestAssured ฉันจะดึงผลลัพธ์ออกมา แม้ว่าขั้นตอนข้างต้นใช้งานได้สำหรับการแตกไฟล์แบบเต็ม แต่เมื่อฉันพยายามสร้าง URI ที่มีเงื่อนไขตัวกรอง ฉันได้รับข้อผิดพลาดของอักขระที่ไม่ถูกต้อง
ฉันได้เขียนฟังก์ชันต่อไปนี้เพื่อรับข้อมูลจาก API: -
public static void getURIIncrementalExtract(String tblName, String params) {
RestAssured.baseURI = null;
String params = ""; //For stackoverflow
String displayValueParam = "sysparm_display_value=true&";
String dateParams = "";
dateParams = "sysparm_query=col_updated_on>=2017-09-30"; //+ fromDate
String uri = "https://[servicenowAPIadd].com/api/now/table/" + tblName + "?" + displayValueParam + params + dateParams;
System.out.println(uri); //URI generated is working correctly in postman.
RestAssured.baseURI = uri;
}
//URI ที่สร้างโดยฟังก์ชันด้านบน //https://[servicenowAPIadd].com/api/now/table/[DBtablename]?sysparm_display_value=true&sysparm_query=col_updated_on>=2017-09-30
public static Response getResponseByPath() {
Response response = null;
try {
response = RestAssured.given()
.when()
.auth()
.basic(username, password)
.get(RestAssured.baseURI);
} catch (Exception e) {
e.printStackTrace();
log.error("Exception in getResponseByPath:-" + e.toString());
}
return response;
}
ในวิธีการหลัก ฉันเรียก getURIIncreationalExtract ตามด้วย getResponseByPath
ฉันได้รับข้อยกเว้นทางไวยากรณ์ที่ไม่ถูกต้องทุกครั้งที่ฉันพยายามเพิ่มตัวกรอง sysparm_query ถ้าฉันลบตัวกรองเช่น "sysparm_query=col_updated_on>=2017-09-30" มันก็ทำงานได้ดี
ฉันคาดว่าจะสร้างและใช้ URI สำหรับข้อมูลที่กรองเช่นกัน ฉันคิดว่าวิธีที่ฉันสร้าง URI อาจผิดได้ ใครสามารถแบ่งปันแนวทางที่ถูกต้องได้โปรด โปรดแจ้งให้เราทราบหากต้องการข้อมูลเพิ่มเติม
[
และ]
ตัวในชื่อโฮสต์ ... - person Stephen C   schedule 07.10.2019