# How to call canister method from a rust main program?

**URL:** <https://forum.dfinity.org/t/how-to-call-canister-method-from-a-rust-main-program/24948>\
**Category:** Rust\
**Created:** [November 24, 2023, 9:42am UTC](https://forum.dfinity.org/t/how-to-call-canister-method-from-a-rust-main-program/24948 "2023-11-24T09:42:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![rosarp](https://avatars.discourse-cdn.com/v4/letter/r/779978/32.png) [@rosarp](https://forum.dfinity.org/u/rosarp)\
**Post date:** [November 24, 2023, 9:42am UTC](https://forum.dfinity.org/t/how-to-call-canister-method-from-a-rust-main-program/24948/1 "2023-11-24T09:42:14Z")

</div>

I’m trying to call canister method from a rust program/axum server endpoint,  
I have deployed canister code locally using dfx start command.

I followed code given at ic-agent docs - [ic\_agent - Rust](https://docs.rs/ic-agent/latest/ic_agent/index.html)

In my canister code:

lib.rs

```auto
#[query]
fn get_some_id() -> String {
    "123".to_owned()
}

```

ic\_backend.did

```auto
service : {
  get_some_id : () -> (text) query;
}

```

And in my main.rs i have function which connects to canister using ic-agent

```auto
async fn connect_to_canister() -> String {
// connecting local replica
    let agent = Agent::builder()
        .with_url("http://127.0.0.1:4943")
        .with_identity(AnonymousIdentity)
        .build()
        .unwrap();

    agent.fetch_root_key().await.unwrap();
    let canister_id = Principal::from_text("local-canister-id-cai").unwrap();
    let empty_args: Vec<u8> = Encode!();
// OR
// let empty_args: Vec<u8> = Encode!( () );
// OR
// let empty_args: Vec<u8> = vec![68, 73, 68, 76, 0, 0];

    match agent
        .query(&canister_id, "get_some_id")
        .with_arg(empty_args)
        .call()
        .await
    {
        Ok(resp) => Decode!(resp.as_slice(), String).unwrap(),
        Err(error) => error.to_string(),
    }
}

```

Its giving me error:

> Query signature verification failed.

Is this issue related to method signature mismatch? Or is it related to identity or certificate?  
Also, how do I debug it from replica side, as there are no debug logs coming up when i use ‘dfx start -v’

---

<div class="post-metadata">

**Author:** ![Samer](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/samer/32/8943_2.png) [@Samer](https://forum.dfinity.org/u/Samer)\
**Post date:** [November 24, 2023, 12:39pm UTC](https://forum.dfinity.org/t/how-to-call-canister-method-from-a-rust-main-program/24948/2 "2023-11-24T12:39:43Z")

</div>

This is a known issue at the moment, see this discord answer

> **[Discord - A New Way to Chat with Friends & Communities](https://discord.com/channels/748416164832608337/872791506853978142/1173770323976532010)**
>
> Discord is the easiest way to communicate over voice, video, and text. Chat, hang out, and stay close with your friends and communities.

Try downgrading ic-agent for now

---

<div class="post-metadata">

**Author:** ![rosarp](https://avatars.discourse-cdn.com/v4/letter/r/779978/32.png) [@rosarp](https://forum.dfinity.org/u/rosarp)\
**Post date:** [November 24, 2023, 1:01pm UTC](https://forum.dfinity.org/t/how-to-call-canister-method-from-a-rust-main-program/24948/3 "2023-11-24T13:01:03Z")

</div>

Thanks a lot @Samer !  
It worked with `.with_verify_query_signatures(false)` with version 0.30.  
For now will do that until dfx gets upgraded.
