Pomster
Pomster

Reputation: 15197

Passing parameters though url?

I am trying to test a call to my one of my functions.

This is called from outside of my website an acts like a Webservice.

To test im trying to pass the parameters though my url.

http://localhost:0000/APIService/UploadValuationDetails?ValuationDetails=[{property_details_address_address1{TagValue:'Test'},{ImageBase64:''}}]?Id=4785

My code in my service:

public void UploadValuationDetails(Dictionary<string, ValuationDetails> JsonResult, int Id)
{
  DatabaseHelper DBH = new DatabaseHelper();

  foreach (var item in JsonResult)
  {                               //(ValuationId , TagName , TagValue , ImageBase64)
    DBH.WSValuationDetailUpdate(Id, item.Key, item.Value.TagValue, item.Value.ImageBase64); 
  }         
}

ValuationDetails class:

public class ValuationDetails
{
   public string TagValue { get; set; }
   public string ImageBase64 { get; set; }
}

Edit Changed ? for the second parameter to &:


> http://localhost:0000/APIService/UploadValuationDetails?ValuationDetails={'property_details_address_address1':[{TagValue:'Test',ImageBase64:''}]}&Id=4785

After changing my url to the one above a break point was hit but the values were incorrect.

enter image description here

Edit 2 Trying to get the correct values in the json result.


I think i'm closer:

http://localhost:0000/APIService/UploadValuationDetails?JsonResult={TagName:"property_details_address_address1",ValuationDetails:{TagValue:"Test","ImageBase64:""}}]&Id=4785

But now my jsonResult = 0

Upvotes: 1

Views: 139

Answers (3)

crthompson
crthompson

Reputation: 15865

Your URL string looks improperly formatted.

For the separator of the URL and the parameters you would use ?.

But to separate parameters use &

http://localhost:0000/APIService/UploadValuationDetails?ValuationDetails=[{property_details_address_address1{TagValue:'Test'},{ImageBase64:''}}]&Id=4785

Your JSON is invalid.

I've worked with it a bit, but it still needs input from you.

[
    {
        "property_details_address_address1": {
            "TagValue": "Test"
        },
        "needs_a_name_here": {
            "ImageBase64": ""
        }
    }
]

Notice that i've put quotes around the names. And your second object also requires a name.

I used JSONLint to validate and create the proper json

Upvotes: 0

Dan Kuida
Dan Kuida

Reputation: 1057

I think it is better to Encode the JSON too. Since the moment you will have for instance in side your data an ? or & you will get an exception too.

Upvotes: 1

Cᴏʀʏ
Cᴏʀʏ

Reputation: 107546

You should use an ampersand (&) to separate multiple query string parameters. As you have it, you're using ?, so "?Id=4785" is being interpreted as part of the value for the ValuationDetails parameter.

Corrected:

                                       this is correct ┐
                                                       ↓
http://localhost:0000/APIService/UploadValuationDetails?ValuationDetails=
 [{property_details_address_address1{TagValue:'Test'},{ImageBase64:''}}]&Id=4785
                                                                        ↑
                                               but this should be fixed ┘

Upvotes: 1

Related Questions