diff --git a/client/src/main/java/io/a2a/client/A2ACardResolver.java b/client/src/main/java/io/a2a/client/A2ACardResolver.java index 88d1e351f..c01e9925b 100644 --- a/client/src/main/java/io/a2a/client/A2ACardResolver.java +++ b/client/src/main/java/io/a2a/client/A2ACardResolver.java @@ -56,6 +56,9 @@ public A2ACardResolver(A2AHttpClient httpClient, String baseUrl, String agentCar Map authHeaders) throws A2AClientError { this.httpClient = httpClient; agentCardPath = agentCardPath == null || agentCardPath.isEmpty() ? DEFAULT_AGENT_CARD_PATH : agentCardPath; + while (agentCardPath.startsWith("/")) { + agentCardPath = agentCardPath.substring(1); + } try { this.url = new URI(baseUrl).resolve(agentCardPath).toString(); } catch (URISyntaxException e) { diff --git a/client/src/test/java/io/a2a/client/A2ACardResolverTest.java b/client/src/test/java/io/a2a/client/A2ACardResolverTest.java index 8d9ff0f5b..a9a660577 100644 --- a/client/src/test/java/io/a2a/client/A2ACardResolverTest.java +++ b/client/src/test/java/io/a2a/client/A2ACardResolverTest.java @@ -96,6 +96,20 @@ public void testGetAgentCardJsonDecodeError() throws Exception { assertFalse(success); } + /** + * Test method for testing agentCard's support for complex URL handling + */ + @Test + public void testUrlResolve() throws Exception { + TestHttpClient client = new TestHttpClient(); + client.body = JsonMessages.AGENT_CARD; + String baseUrl = "http://example.com/it_agent/"; + A2ACardResolver resolver = new A2ACardResolver(client, baseUrl,AGENT_CARD_PATH); + AgentCard card = resolver.getAgentCard(); + assertEquals("http://example.com/it_agent/.well-known/agent.json", client.url); + + } + @Test public void testGetAgentCardRequestError() throws Exception {