You need to sign in to do that
Don't have an account?
George Laird 12
Please help with XML response to populate a lead field.
Hello. I'm quite new to callouts. This is my first callout that is XML repsonse and not JSON. My callout is working fine, and I'm getting a very long resonse in the debug log. I need to popualte two custom fields on the Lead called "Bedrooms" and "Bathrooms." These are decimal fields. I can see the very long XML response in the debug log but I can't figure out how to get it in APEX and popualte the lead field. Here is my apex class, which works , but I'm not sure what to add to get the bedrooms and bathrooms decimals and put them into the fields on the lead. I'll post the apex class and the sample resonse from the debug log.
global class ZillowCallout{
@future (callout=true)
public static void getFields(Id lid) {
string zwsid = 'X1-ZWz188ya5jca2z_4hjdy';
Lead l=[select id,Name,Street,City,State,PostalCode from Lead where id=:lid];
string addy = l.Street;
string citystatezip = l.City + ',' + l.State + ',' + l.PostalCode;
//Construct HTTP request and response
//Http request method, Header, and Endpoint
HttpRequest req = new HttpRequest();
req.setEndpoint('http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=' + zwsid + '&address=' + addy + '&citystatezip=' + citystatezip);
req.setMethod('GET');
req.setHeader('Content-Type','application/json');
req.setHeader('Authorization', 'BASIC' + 'X1-ZWz188ya5jca2z_4hjdy');
//Http response method
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getStatusCode());
string responseJSON = res.getBody();
System.debug(responseJSON);
Dom.Document doc = res.getBodyDocument();
Dom.XMLNode address = doc.getRootElement();
if(res.getStatusCode() < 300) {
// ResponseModel r = (ResponseModel)JSON.deserialize(responseJSON, ResponseModel.class);
ResponseModel r = new ResponseModel();
//l.responseAcceptedBody__c = 'Time: ' +system.now() +' - ' +responseJSON;
l.Bathrooms__c = r.Bathrooms;
l.Bedrooms__c = r.Bedrooms;
update l;
}
else {
//l.responseErrorBody__c = 'Time: ' +system.now() +' - ' +responseJSON;
update l;
}
}
//This inner class is to handle the mapping in reference to the response.
private class ResponseModel{
public Decimal Bathrooms;
public Decimal Bedrooms;
}
}
Here is a sample response from debug log:
09:23:56:190 USER_DEBUG [36]|DEBUG|<?xml version="1.0" encoding="utf-8"?><SearchResults:searchresults xsi:schemaLocation="http://www.zillow.com/static/xsd/SearchResults.xsd https://www.zillowstatic.com/vstatic/18f7df5/static/xsd/SearchResults.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SearchResults="http://www.zillow.com/static/xsd/SearchResults.xsd"><request><address>5536Foxrun</address><citystatezip>Cincinnati,OH,45239</citystatezip></request><message><text>Request successfully processed</text><code>0</code></message><response><results><result><zpid>34264904</zpid><links><homedetails>https://www.zillow.com/homedetails/5536-Foxrun-Ct-Cincinnati-OH-45239/34264904_zpid/</homedetails><graphsanddata>http://www.zillow.com/homedetails/5536-Foxrun-Ct-Cincinnati-OH-45239/34264904_zpid/#charts-and-data</graphsanddata><mapthishome>http://www.zillow.com/homes/34264904_zpid/</mapthishome><comparables>http://www.zillow.com/homes/comps/34264904_zpid/</comparables></links><address><street>5536 Foxrun Ct</street><zipcode>45239</zipcode><city>CINCINNATI</city><state>OH</state><latitude>39.192961</latitude><longitude>-84.57547</longitude></address><FIPScounty>39061</FIPScounty><useCode>SingleFamily</useCode><taxAssessmentYear>2017</taxAssessmentYear><taxAssessment>151220.0</taxAssessment><yearBuilt>1966</yearBuilt><lotSizeSqFt>12458</lotSizeSqFt><finishedSqFt>2912</finishedSqFt><bathrooms>3.0</bathrooms><bedrooms>4</bedrooms><totalRooms>9</totalRooms><zestimate><amount currency="USD">188146</amount><last-updated>11/18/2018</last-updated><oneWeekChange deprecated="true"></oneWeekChange><valueChange duration="30" currency="USD">1541</valueChange><valuationRange><low currency="USD">178739</low><high currency="USD">197553</high></valuationRange><percentile>0</percentile></zestimate><localRealEstate><region name="Mt. Airy" id="274620" type="neighborhood"><zindexValue>119,400</zindexValue><links><overview>http://www.zillow.com/local-info/OH-Cincinnati/Mt.-Airy/r_274620/</overview><forSaleByOwner>http://www.zillow.com/mt.-airy-cincinnati-oh/fsbo/</forSaleByOwner><forSale>http://www.zillow.com/mt.-airy-cincinnati-oh/</forSale></links></region></localRealEstate></result><result><zpid>110070415</zpid><links><homedetails>https://www.zillow.com/homedetails/5536-Foxrun-Ct-Cincinnati-OH-45239/110070415_zpid/</homedetails><graphsanddata>http://www.zillow.com/homedetails/5536-Foxrun-Ct-Cincinnati-OH-45239/110070415_zpid/#charts-and-data</graphsanddata><mapthishome>http://www.zillow.com/homes/110070415_zpid/</mapthishome><comparables>http://www.zillow.com/homes/comps/110070415_zpid/</comparables></links><address><street>5536 Foxrun Ct</street><zipcode>45239</zipcode><city>CINCINNATI</city><state>OH</state><latitude>39.192961</latitude><longitude>-84.57547</longitude></address><FIPScounty>39061</FIPScounty><useCode>SingleFamily</useCode><taxAssessmentYear>2017</taxAssessmentYear><yearBuilt>1965</yearBuilt><lotSizeSqFt>48918</lotSizeSqFt><finishedSqFt>2908</finishedSqFt><bathrooms>4.0</bathrooms><bedrooms>4</bedrooms><totalRooms>13</totalRooms><zestimate><amount currency="USD">240166</amount><last-updated>11/18/2018</last-updated><oneWeekChange deprecated="true"></oneWeekChange><valueChange duration="30" currency="USD">-997</valueChange><valuationRange><low currency="USD">194534</low><high currency="USD">293003</high></valuationRange><percentile>0</percentile></zestimate><localRealEstate><region name="Mt. Airy" id="274620" type="neighborhood"><zindexValue>119,400</zindexValue><links><overview>http://www.zillow.com/local-info/OH-Cincinnati/Mt.-Airy/r_274620/</overview><forSaleByOwner>http://www.zillow.com/mt.-airy-cincinnati-oh/fsbo/</forSaleByOwner><forSale>http://www.zillow.com/mt.-airy-cincinnati-oh/</forSale></links></region></localRealEstate></result></results></response></SearchResults:searchresults><!-- H:027 T:88ms S:2041 R:Sat Nov 24 09:23:57 PST 2018 B:5.0.57261.8-hotfix_2018-11-13.68abad3~hotfix-for-2018-11-13.bfcf05d -->
global class ZillowCallout{
@future (callout=true)
public static void getFields(Id lid) {
string zwsid = 'X1-ZWz188ya5jca2z_4hjdy';
Lead l=[select id,Name,Street,City,State,PostalCode from Lead where id=:lid];
string addy = l.Street;
string citystatezip = l.City + ',' + l.State + ',' + l.PostalCode;
//Construct HTTP request and response
//Http request method, Header, and Endpoint
HttpRequest req = new HttpRequest();
req.setEndpoint('http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=' + zwsid + '&address=' + addy + '&citystatezip=' + citystatezip);
req.setMethod('GET');
req.setHeader('Content-Type','application/json');
req.setHeader('Authorization', 'BASIC' + 'X1-ZWz188ya5jca2z_4hjdy');
//Http response method
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getStatusCode());
string responseJSON = res.getBody();
System.debug(responseJSON);
Dom.Document doc = res.getBodyDocument();
Dom.XMLNode address = doc.getRootElement();
if(res.getStatusCode() < 300) {
// ResponseModel r = (ResponseModel)JSON.deserialize(responseJSON, ResponseModel.class);
ResponseModel r = new ResponseModel();
//l.responseAcceptedBody__c = 'Time: ' +system.now() +' - ' +responseJSON;
l.Bathrooms__c = r.Bathrooms;
l.Bedrooms__c = r.Bedrooms;
update l;
}
else {
//l.responseErrorBody__c = 'Time: ' +system.now() +' - ' +responseJSON;
update l;
}
}
//This inner class is to handle the mapping in reference to the response.
private class ResponseModel{
public Decimal Bathrooms;
public Decimal Bedrooms;
}
}
Here is a sample response from debug log:
09:23:56:190 USER_DEBUG [36]|DEBUG|<?xml version="1.0" encoding="utf-8"?><SearchResults:searchresults xsi:schemaLocation="http://www.zillow.com/static/xsd/SearchResults.xsd https://www.zillowstatic.com/vstatic/18f7df5/static/xsd/SearchResults.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SearchResults="http://www.zillow.com/static/xsd/SearchResults.xsd"><request><address>5536Foxrun</address><citystatezip>Cincinnati,OH,45239</citystatezip></request><message><text>Request successfully processed</text><code>0</code></message><response><results><result><zpid>34264904</zpid><links><homedetails>https://www.zillow.com/homedetails/5536-Foxrun-Ct-Cincinnati-OH-45239/34264904_zpid/</homedetails><graphsanddata>http://www.zillow.com/homedetails/5536-Foxrun-Ct-Cincinnati-OH-45239/34264904_zpid/#charts-and-data</graphsanddata><mapthishome>http://www.zillow.com/homes/34264904_zpid/</mapthishome><comparables>http://www.zillow.com/homes/comps/34264904_zpid/</comparables></links><address><street>5536 Foxrun Ct</street><zipcode>45239</zipcode><city>CINCINNATI</city><state>OH</state><latitude>39.192961</latitude><longitude>-84.57547</longitude></address><FIPScounty>39061</FIPScounty><useCode>SingleFamily</useCode><taxAssessmentYear>2017</taxAssessmentYear><taxAssessment>151220.0</taxAssessment><yearBuilt>1966</yearBuilt><lotSizeSqFt>12458</lotSizeSqFt><finishedSqFt>2912</finishedSqFt><bathrooms>3.0</bathrooms><bedrooms>4</bedrooms><totalRooms>9</totalRooms><zestimate><amount currency="USD">188146</amount><last-updated>11/18/2018</last-updated><oneWeekChange deprecated="true"></oneWeekChange><valueChange duration="30" currency="USD">1541</valueChange><valuationRange><low currency="USD">178739</low><high currency="USD">197553</high></valuationRange><percentile>0</percentile></zestimate><localRealEstate><region name="Mt. Airy" id="274620" type="neighborhood"><zindexValue>119,400</zindexValue><links><overview>http://www.zillow.com/local-info/OH-Cincinnati/Mt.-Airy/r_274620/</overview><forSaleByOwner>http://www.zillow.com/mt.-airy-cincinnati-oh/fsbo/</forSaleByOwner><forSale>http://www.zillow.com/mt.-airy-cincinnati-oh/</forSale></links></region></localRealEstate></result><result><zpid>110070415</zpid><links><homedetails>https://www.zillow.com/homedetails/5536-Foxrun-Ct-Cincinnati-OH-45239/110070415_zpid/</homedetails><graphsanddata>http://www.zillow.com/homedetails/5536-Foxrun-Ct-Cincinnati-OH-45239/110070415_zpid/#charts-and-data</graphsanddata><mapthishome>http://www.zillow.com/homes/110070415_zpid/</mapthishome><comparables>http://www.zillow.com/homes/comps/110070415_zpid/</comparables></links><address><street>5536 Foxrun Ct</street><zipcode>45239</zipcode><city>CINCINNATI</city><state>OH</state><latitude>39.192961</latitude><longitude>-84.57547</longitude></address><FIPScounty>39061</FIPScounty><useCode>SingleFamily</useCode><taxAssessmentYear>2017</taxAssessmentYear><yearBuilt>1965</yearBuilt><lotSizeSqFt>48918</lotSizeSqFt><finishedSqFt>2908</finishedSqFt><bathrooms>4.0</bathrooms><bedrooms>4</bedrooms><totalRooms>13</totalRooms><zestimate><amount currency="USD">240166</amount><last-updated>11/18/2018</last-updated><oneWeekChange deprecated="true"></oneWeekChange><valueChange duration="30" currency="USD">-997</valueChange><valuationRange><low currency="USD">194534</low><high currency="USD">293003</high></valuationRange><percentile>0</percentile></zestimate><localRealEstate><region name="Mt. Airy" id="274620" type="neighborhood"><zindexValue>119,400</zindexValue><links><overview>http://www.zillow.com/local-info/OH-Cincinnati/Mt.-Airy/r_274620/</overview><forSaleByOwner>http://www.zillow.com/mt.-airy-cincinnati-oh/fsbo/</forSaleByOwner><forSale>http://www.zillow.com/mt.-airy-cincinnati-oh/</forSale></links></region></localRealEstate></result></results></response></SearchResults:searchresults><!-- H:027 T:88ms S:2041 R:Sat Nov 24 09:23:57 PST 2018 B:5.0.57261.8-hotfix_2018-11-13.68abad3~hotfix-for-2018-11-13.bfcf05d -->
All Answers