# Ignition 8.3 system.util.sendRequest() causes an exception

**URL:** <https://forum.inductiveautomation.com/t/ignition-8-3-system-util-sendrequest-causes-an-exception/110897>\
**Category:** Ignition\
**Tags:** ignition83\
**Created:** [September 23, 2025, 5:04pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-system-util-sendrequest-causes-an-exception/110897 "2025-09-23T17:04:45Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![atsm26](https://avatars.discourse-cdn.com/v4/letter/a/b38774/32.png) [@atsm26](https://forum.inductiveautomation.com/u/atsm26)\
**Post date:** [September 23, 2025, 5:04pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-system-util-sendrequest-causes-an-exception/110897/1 "2025-09-23T17:04:45Z")

</div>

I am trying to do a basic message event between two gateways and I am getting an exception from the system.util.sendRequest() function

```python
payload = {
	"program": program,
	"machine_id": machine_id
}
response = system.util.sendRequest(
	project = "ProjectName",
	messageHandler = "RequestProgram",
	remoteServer = "GatewayName",
	payload = payload,
	timeoutSec = 120
)
return response

```

The handler that I am trying to send to literally just has “return True”

I am also trying to send the request from the gateway itself as shown below and it doesn’t work

```python
payload = {
	"program": program,
	"machine_id": machine_id
}
response = system.util.sendRequest(
	project = system.util.getProjectName(),
	messageHandler = "RequestProgram",
	remoteServer = system.tag.readBlocking("[System]Gateway/SystemName")[0].value,
	payload = payload,
	timeoutSec = 120
)
return response

```

The shortened error I am getting is down below:

```python
Traceback (most recent call last):
  File "<input>", line 5, in <module>
	at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)

	at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)

	at com.inductiveautomation.ignition.common.script.builtin.SystemUtilities.sendRequest(SystemUtilities.java:827)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.ClassCastException: class java.util.Collections$UnmodifiableMap cannot be cast to class org.python.core.PyDictionary (java.util.Collections$UnmodifiableMap is in module java.base of loader 'bootstrap'; org.python.core.PyDictionary is in unnamed module of loader 'app')

```

This worked before we upgraded to 8.3 but doesn’t now. Any ideas why?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [September 23, 2025, 5:05pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-system-util-sendrequest-causes-an-exception/110897/2 "2025-09-23T17:05:57Z")

</div>

This just got reported in another thread this morning, it's being looked into.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [September 23, 2025, 11:09pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-system-util-sendrequest-causes-an-exception/110897/3 "2025-09-23T23:09:52Z")

</div>

If you freshly launch the designer, does this problem still occur?  
If so, is there an error at the beginning of your designer's logging output with a message `Failed to retrieve script message encoding, defaulting to JSON`? If so, can you post the full related stacktrace here?

---

<div class="post-metadata">

**Author:** ![atsm26](https://avatars.discourse-cdn.com/v4/letter/a/b38774/32.png) [@atsm26](https://forum.inductiveautomation.com/u/atsm26)\
**Post date:** [September 24, 2025, 1:09pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-system-util-sendrequest-causes-an-exception/110897/4 "2025-09-24T13:09:30Z")

</div>

I tried it again this morning. I dont see “Failed to retrieve script message encoding, defaulting to JSON” anywhere. Stack and my console log shown below:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/8/689d8a4a719b6b99debaee6b274024d4dd46817b.png)

```python
Java Traceback: Traceback (most recent call last): File "<input>", line 5, in <module> at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source) at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source) at com.inductiveautomation.ignition.common.script.builtin.SystemUtilities.sendRequest(SystemUtilities.java:827) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.ClassCastException: class java.util.Collections$UnmodifiableMap cannot be cast to class org.python.core.PyDictionary (java.util.Collections$UnmodifiableMap is in module java.base of loader 'bootstrap'; org.python.core.PyDictionary is in unnamed module of loader 'app') at org.python.core.Py.JavaError(Py.java:545) at org.python.core.Py.JavaError(Py.java:536) at org.python.core.PyReflectedFunction. __call__ (PyReflectedFunction.java:192) at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction. __call__ (ScriptManager.java:563) at org.python.core.PyObject. __call__ (PyObject.java:400) at org.python.pycode._pyx9.f$0(<input>:12) at org.python.pycode._pyx9.call_function(<input>) at org.python.core.PyTableCode.call(PyTableCode.java:173) at org.python.core.PyCode.call(PyCode.java:18) at org.python.core.Py.runCode(Py.java:1703) at org.python.core.Py.exec(Py.java:1747) at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:277) at org.python.util.InteractiveInterpreter.runcode(InteractiveInterpreter.java:130) at com.inductiveautomation.ignition.designer.gui.tools.jythonconsole.JythonConsole$ConsoleWorker.doInBackground(JythonConsole.java:628) at com.inductiveautomation.ignition.designer.gui.tools.jythonconsole.JythonConsole$ConsoleWorker.doInBackground(JythonConsole.java:616) at java.desktop/javax.swing.SwingWorker$1.call(Unknown Source) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.desktop/javax.swing.SwingWorker.run(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.util.concurrent.ExecutionException: java.lang.ClassCastException: class java.util.Collections$UnmodifiableMap cannot be cast to class org.python.core.PyDictionary (java.util.Collections$UnmodifiableMap is in module java.base of loader 'bootstrap'; org.python.core.PyDictionary is in unnamed module of loader 'app') at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source) at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source) at com.inductiveautomation.ignition.common.script.builtin.SystemUtilities.sendRequest(SystemUtilities.java:827) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at org.python.core.PyReflectedFunction. __call__ (PyReflectedFunction.java:190) ... 18 more Caused by: java.lang.ClassCastException: class java.util.Collections$UnmodifiableMap cannot be cast to class org.python.core.PyDictionary (java.util.Collections$UnmodifiableMap is in module java.base of loader 'bootstrap'; org.python.core.PyDictionary is in unnamed module of loader 'app') at com.inductiveautomation.ignition.gateway.script.rpc.ScriptMessagingRpcImpl.extractPayload(ScriptMessagingRpcImpl.java:93) at com.inductiveautomation.ignition.gateway.script.rpc.ScriptMessagingRpcImpl.dispatchRequest(ScriptMessagingRpcImpl.java:69) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(:0) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(:0) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(:0) at java.lang.reflect.Method.invoke(:0) at com.inductiveautomation.ignition.gateway.rpc.RpcDelegate$DelegateRpcHandler.handle(RpcDelegate.java:271) at com.inductiveautomation.ignition.gateway.rpc.RpcRoutes.lambda$handle$1(RpcRoutes.java:199) at com.inductiveautomation.ignition.gateway.rpc.RpcRoutes.safelyHandle(RpcRoutes.java:219) at com.inductiveautomation.ignition.gateway.rpc.RpcRoutes.handle(RpcRoutes.java:198) at com.inductiveautomation.ignition.gateway.dataroutes.Route.service(Route.java:361) at com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupImpl.service(RouteGroupImpl.java:120) at com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupCollectionServlet.serviceInternal(RouteGroupCollectionServlet.java:133) at com.inductiveautomation.ignition.gateway.dataroutes.AbstractRouteGroupServlet.service(AbstractRouteGroupServlet.java:40) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) at org.eclipse.jetty.ee10.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1379) at org.eclipse.jetty.ee10.servlet.ServletHolder.handle(ServletHolder.java:736) at org.eclipse.jetty.ee10.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1614) at com.inductiveautomation.catapult.filters.GatewayFilter.doFilter(GatewayFilter.java:116) at jakarta.servlet.http.HttpFilter.doFilter(HttpFilter.java:97) at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:208) at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1586) at org.eclipse.jetty.ee10.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1547) at org.eclipse.jetty.ee10.servlet.ServletChannel.dispatch(ServletChannel.java:819) at org.eclipse.jetty.ee10.servlet.ServletChannel.handle(ServletChannel.java:436) at org.eclipse.jetty.ee10.servlet.ServletHandler.handle(ServletHandler.java:464) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575) at org.eclipse.jetty.ee10.servlet.SessionHandler.handle(SessionHandler.java:717) at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060) at org.eclipse.jetty.rewrite.handler.RewriteHandler$LastRuleHandler.handle(RewriteHandler.java:159) at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108) at org.eclipse.jetty.rewrite.handler.HeaderPatternRule$1.handle(HeaderPatternRule.java:89) at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108) at org.eclipse.jetty.rewrite.handler.HeaderPatternRule$1.handle(HeaderPatternRule.java:89) at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108) at org.eclipse.jetty.rewrite.handler.HeaderPatternRule$1.handle(HeaderPatternRule.java:89) at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108) at org.eclipse.jetty.rewrite.handler.HeaderPatternRule$1.handle(HeaderPatternRule.java:89) at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108) at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:143) at org.eclipse.jetty.server.Handler$Sequence.handle(Handler.java:805) at org.eclipse.jetty.server.Handler$Sequence.handle(Handler.java:805) at org.eclipse.jetty.server.Server.handle(Server.java:182) at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:662) at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:418) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99) at org.eclipse.jetty.io.ssl.SslConnection$SslEndPoint.onFillable(SslConnection.java:575) at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:390) at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:150) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99) at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164) at java.lang.Thread.run(:0) Traceback (most recent call last): File "<input>", line 5, in <module> at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source) at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source) at com.inductiveautomation.ignition.common.script.builtin.SystemUtilities.sendRequest(SystemUtilities.java:827) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.ClassCastException: class java.util.Collections$UnmodifiableMap cannot be cast to class org.python.core.PyDictionary (java.util.Collections$UnmodifiableMap is in module java.base of loader 'bootstrap'; org.python.core.PyDictionary is in unnamed module of loader 'app')

```

This is what I ran directly.

```python
payload = {
	"program": "program",
	"machine_id": "machine_id"
}
response = system.util.sendRequest(
	project = "ProjectName",
	messageHandler = "RequestProgram",
	remoteServer = "GatewayName",
	payload = payload,
	timeoutSec = 120
)
print response

```

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [September 24, 2025, 6:07pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-system-util-sendrequest-causes-an-exception/110897/5 "2025-09-24T18:07:52Z")

</div>

Echoing my response from this other thread for visibility - and thank you @atsm26 also for your report.

> [@sendRequest not possible in script console](https://forum.inductiveautomation.com/t/sendrequest-not-possible-in-script-console/110891/13):
>
> Thanks, I was able to figure out the root cause and work out a fix. Hopefully will get in to 8.3.1, if not 8.3.2. If you restart the gateway and the designer, it should work consistently until/unless you change the 'Script Message Encoding' property in the gateway settings.

---

<div class="post-metadata">

**Author:** ![atsm26](https://avatars.discourse-cdn.com/v4/letter/a/b38774/32.png) [@atsm26](https://forum.inductiveautomation.com/u/atsm26)\
**Post date:** [September 24, 2025, 6:18pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-system-util-sendrequest-causes-an-exception/110897/6 "2025-09-24T18:18:10Z")

</div>

Thanks for the response and working on it! Appreciate it
